Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Плагин [ECON] Fé-economy v0.9.3 — простая экономика с поддержкой СУБД [1.7-1.8]

А для всех процессов -переводов, заработка, покупок, нужна, собственно, экономика.
Ну так переводы делаются его pay, а покупки/продажи всякими chestshop-ами, jobs-ами и т.п.?
Ну окай, всё равно нужно починить, сейчас займусь.
 
Я бы проанализировал, какие изменения от версии 1.8.3 были сделаны, которые так повлияли) Ждём результата.
 
А можно как то без uuid чтоб работал плагин? А то лк не охото переписывать.
 
А можно как то без uuid чтоб работал плагин? А то лк не охото переписывать.
А он не работает? Я просто не могу попробовать, ибо сам их широко использую, но вроде как если нет UUID, плагин просто юзает ник как ключ.
Если есть конкретная проблема, постите сюда логи.
 
А что насчет того что не работает плагин. [Fe] You dont't have an account.
Пока не имею возможности и времени посмотреть, что у вас. У меня вроде работает, довольно-таки давно.
Какие-то подробности о сервере? Версия?
 
Поддерживаю предыдущий пост. У меня та же самая проблема ((
 
В этой теме представлен мой форк широко известного плагина Fé-economy, сокр. просто Fe. За основу взята последняя на текущий момент версия 0.8.2.

Внимание: выяснилось, плагин некорректно работает с SQLite, поэтому до объявления о фиксе, пожалуйста, используйте MySQL.


Конфигурация плагина.
По сравнению с оригинальной версией, на которой основан мой форк, файл config.yml претерпел значительные изменения. Однако, плагин полноценно проводит конвертацию в новый формат и сохраняет бекап старого конфига.
Стоит отметить, что плагин имеет внутреннее название Fe2 (вместо Fe) и создаёт соответствующую папку для конфига. Чтобы использовать старый конфиг, перед запуском просто сделайте копию папки и config.yml.
YAML:
settings:
  # Количество монет для новых игроков
  new-player-holdings: 10.00
  # Максимально допустимое количество монет для каждого игрока
  maximum-holdings: -1.0
  # Сколько по умолчанию показывать наиболее богатых игроков
  show-top: 10
  # Префикс для ответов плагина в чате
  prefix: Fe
  # Настройки валюты
  currency:
    # Префикс валюты. Например, кол-во долларов пишется так: $100.
     prefix: ''
    # Возможен ли отрицательный баланс
     negative: false
    # Рубли/доллары/мажорная единица валюты
     major:
       single: Fe
       multiple: Fe
    # Копейки/центы/минорная единица валюты
     minor:
      # Включено или нет?
       enabled: false
       single: Fe
       multiple: Fe
  # Тип используемой БД: mysql или sqlite
  database-type: sqlite
  # SQLite в общем-то настройками не богат
  sqlite: {}
  # Настройки MySQL
  mysql:
    # Перечитывать ли счёт игрока из БД при каждом обращении к нему?
    # Эта настройка необходима, если Вы используете ЛК, где можно тратить монеты.
    # Если количество монет может меняться только на сервере, её можно выключить.
    # Это значительно снизит нагрузку на сервер.
    maximum-consistency: true
    # Адрес, логин и пароль для подключения
    connection:
      database: localhost:3306/minecraft
      username: user
      password: pass
    # Названия таблиц и колонок в них
    tables:
      accounts: fe_accounts
    columns:
      accounts:
        uuid:     uuid
        username: name
        money:    money
  # Удалять ли при запуске счета, на которых содержится количество
  # монет по умолчанию?
  autoclean: true
# Используется для автоматического обновления настроек. Не менять.
internal:
  version: 1

Команды и пермишены.
  • fe top [#] — показать сколько-то самых богатых игроков.
    fe.top
  • fe balance [who] — показать свой или чужой баланс.
    fe.balance, fe.balance.other
  • fe send [who] [$] — послать монет со своего счёта на чужой.
    fe.send
  • fe create [who] — создать запись.
    fe.create
  • fe grant [who] [$] — зачисление монет на счёт.
    fe.grant
  • fe deduct [who] [$] — снятие монет со счёта.
    fe.deduct
  • fe set [who] [$] — установление точного значения кол-ва монет на счёте.
    fe.set
  • fe remove [who] — удаление записи.
    fe.remove
  • fe clean — удаление записей со счетами, равными значению по умолчанию.
    fe.clean
  • fe migrate <mysql|sqlite> — полный дамп из текущего хранилища в указанное (не может быть текущим).
    fe.migrate
  • fe debug — включение показа в консоли стека для каждого вызова методов обработчика VaultAPI.
    fe.debug
  • fe reload — перезагрузка плагина.
    fe.reload
  • fe help — показ справки по командам.
    fe.?
Часть пермишенов (для игроков) объединена в один fe.member, другая часть (для администраторов) — в fe.admin; на всякий случай все вместе они в пермишене fe.*.

Поведение относительно UUID-ов.
В оригинальной версии использовался Player UUID Fetcher, который запрашивал пачками uuid-ы игроков по их никам у лицензионных серверов Mojang. Мой этого не делает. Каждому игроку при входе на сервер создаётся запись — имя и uuid берутся из PlayerJoinEvent. Если в БД имелась запись с таким ником (созданная командой, например) и/или таким uuid-ом, к ней будет добавлена недостающая часть. uuid имеет приоритет над именем, поэтому если uuid старый, а ник новый, то обновится именно ник.

История изменений.
  • 0.9.3: исправлен баг с дюпом счёта, мелкие исправления в коде.
  • 0.9.1: возможен режим кэширования счёта игроков без постоянного перечитывания его из БД (нужно выставить settings.mysql.maximum-consistency: false).
  • 0.9.0: запись в БД происходит отдельным потоком; добавлены команды /fe migrate и /fe debug.
  • 0.8.4: изменен файл конфигурации, поведение относительно uuid, почищен код.
  • 0.8.2, взята оригинальная версия.
Возможные проблемы.
Конкретно в моём случае я использую СУБД, значительно отдалённый от игрового сервера, и если включить maximum-consistency, то даже 1-2 игрока, постоянно продающих в админ-шопе, могут приложить сервер. Есть на рубакките программисты, которые утверждают, что старые версии без uuid-ов работают без лагов и при этом перечитывают данные из БД при каждом обращении к счёту. Я в этом сомневаюсь, но всегда готов к конструктивной критике и тем более советам по деталям кода.
Оригинальный плагин (Fe):
Global+Statistics.borderless.png

Мой форк (Fe2):
Global+Statistics.borderless.png

А что насчёт нагрузки? Сейчас стоит ориг. версия, но из за неё заметно подвисает.
Ясно. Конечно нагрузка в разы меньше чем от оригинального FE, но сам плагин багнутый
нулей в базу пишет и вообще творит хер пойми что.
 
У меня не творит, но у меня всё по uuid-ам.
Пока не имею возможности и времени посмотреть, что у вас.
Плагин остаётся как есть до середины января. Быстрее не могу.
Код открыт, попробуйте разобраться сами, и прислать Pull Request, принять смогу.
 
Некоторые записи в MySQL создаются без имени пользователя с null, на разных никах так. Если у другого пользователя так же то запись перезаписывается под него.
http://prntscr.com/aj3zdh
 
Это всё из-за того, что Fé пытается усидеть на двух стульях сразу: на старых серверах с ядрами, которые знать ничего не знают про UUID-ы, и на новых, где UUID является первичным, а ник теоретически может быть изменён.
По-хорошему, нужно забить на старые сервера, и юзать исключительно UUID-ы, но всё эту лишнюю логику выкинуть, больно много в ней потенциальных дыр...
Я не буду сейчас браться за это, лениво.
 
Это всё из-за того, что Fé пытается усидеть на двух стульях сразу: на старых серверах с ядрами, которые знать ничего не знают про UUID-ы, и на новых, где UUID является первичным, а ник теоретически может быть изменён.
По-хорошему, нужно забить на старые сервера, и юзать исключительно UUID-ы, но всё эту лишнюю логику выкинуть, больно много в ней потенциальных дыр...
Я не буду сейчас браться за это, лениво.
А 1.8.8 на сколько старый сервер ? Я использую spigot -1.8.8. И как заставить его тут работать ?
 
А 1.8.8 на сколько старый сервер ? Я использую spigot -1.8.8. И как заставить его тут работать ?
У меня тоже сервера Spigot 1.8.8, и вроде даже до этого были 1.7.10, плагин не менялся. Всё работает отлично.
Мои сервера находятся в online-mode, возможно влияет именно то, что проблемные сервера в offline-mode.
У Вас какой сервер?

И ещё, если у Вас MySQL находится на той же машине, что и игровой, попробуйте включить в конфиге опцию max-consistency.
 
У меня тоже сервера Spigot 1.8.8, и вроде даже до этого были 1.7.10, плагин не менялся. Всё работает отлично.
Мои сервера находятся в online-mode, возможно влияет именно то, что проблемные сервера в offline-mode.
У Вас какой сервер?

И ещё, если у Вас MySQL находится на той же машине, что и игровой, попробуйте включить в конфиге опцию max-consistency.
А, можно сделать так, чтобы сервер пускал с пиратки в online-mode без своего лаунчера?
P.S.Ка там rscm?
 
У меня тоже сервера Spigot 1.8.8, и вроде даже до этого были 1.7.10, плагин не менялся. Всё работает отлично.
Мои сервера находятся в online-mode, возможно влияет именно то, что проблемные сервера в offline-mode.
У Вас какой сервер?

И ещё, если у Вас MySQL находится на той же машине, что и игровой, попробуйте включить в конфиге опцию max-consistency.
1.8.8 offline-mode, max-consistency включен
 
А, можно сделать так, чтобы сервер пускал с пиратки в online-mode без своего лаунчера?
Без своего невозможно. Нужно править пиратские клиенты так, чтобы они знали альтернативные адреса php-скриптов.
 
Есть проблема с плагином. Версии выше 9.0 дюпают счет (фикс от дюпа не помогает).
Последний коммит без дюпа(возможно незаметен из-за проблем с записю в sql): https://github.com/RuBukkit/Fe-economy/commit/90a676e3a3942559fc7fa860d61ca9d70ff2b89c
Как проверить:
1. используем плагины Fe(9.1 и выше), Vault, Essentials(или EssentialsX - без разницы)
2. Fe настраиваем на работу с mysql
3. Устанавливаем в Essentials стоимость команды(я использовал /setwarp)
4. несколько раз используем платную команду Essentials
5. Профит.
 
Последнее редактирование:

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

Назад
Верх