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

Идея Перетаскивание вещей в бд и обратно

Тема в разделе "Запросы на разработку плагинов", создана пользователем Lapos213, 13 фев 2013.

  1. Автор темы
    Lapos213

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

    Баллы:
    103
     
  2. Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    На разработку сейчас нет времени. Самому слишком много нужно написать.
    В данной теме просто сказал что задача слишком легка для такой цены.
    Легка настолько, что плагин будет состоять не более чем из 50 - 100 строк.
     
  3. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Не так то все просто.
    Во первых, работа с БД предусматривает знание sql.
    Во вторых, нельзя выполнять запрос к БД в главном потоке. Мы же не хотим повесить сервер при отказе базы ;-)
    И самый главный вопрос: как же сохранять item meta в базу? Грубо говоря, все теги, начиная от енчантов, заканчивая цветами фейерверка. Если кто-нибудь даст достойный ответ, я напишу этот плагин бесплатно =)
     
    Lapos213 нравится это.
  4. Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    Выносить работу с базой в отдельный поток я уже примерно научился. Насчет item meta - видел где-то плагин, который сохранял предметы в файл а ихнюю мету преобразовывал в массив значений.
    {name: x, name2: y}
    что-то подобное.

    На самом деле я не подумал о мете совсем. Но если удастся преобразовать все данные в массив - восстановить их не должно составить труда.
     
  5. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Мету можно преобразовать в байтовый поток, а также восстановить ее из потока. Все данные легко переводятся в byte[], и даже можно применить сжатие. Но вот проблема: размер массива может быть совершенно любой. А может его вообще не быть. Задача сводится к оптимальному хранению данных произвольной длины. Хотя мб есть и другие варианты.
     
  6. Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Я по поводу своего плагина задавал вопрос насчёт мета-даты, но потерял свою тему. Ission тогда помог мне.
     
  7. elving

    elving Активный участник

    Баллы:
    61
  8. Автор темы
    Lapos213

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

    Баллы:
    103
    Можете объяснить что собой представляет методата? и что будет если методаты не будет?
     
  9. ptnk

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

    Баллы:
    173
    В ванильном майне - это зачарование + что-то там про цвета фейерверка... Некоторые моды имеют какой-то странный формат хранения данных (К примеру батарейки из ic2 - заряженную вещь проблематично сохранить).
    Самый грубый вариант - это сохранить id:id.
     
  10. Автор темы
    Lapos213

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

    Баллы:
    103
    а вы можете сделать с id:id?
     
  11. ptnk

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

    Баллы:
    173
    угу.
     
  12. Автор темы
    Lapos213

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

    Баллы:
    103
    ,
     
    Последнее редактирование: 10 июл 2015
  13. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Отличная подстава от нотча: прочность вещи и субайди блока - одно и то же.
    И методату хрен сохранишь.

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

    Есть у кого идеи?

    Или можно хранить скопом, но ограничить количество итемов которые игрок может одновременно иметь в базе. Например ограничение в 10 итемов будет вполне нормальным.

    Если нормального решения так и не предложат, то делаю как есть в ограничением настраиваемым в конфиге.
     
  14. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Такс, вместе с асинхронным обращением к бд вылезла куча проблем.
    Особенно когда сразу с 2х серверов пытаешься вещь взять или положить.
    Есть тут спецы по mysql? А то я вообще в этом не шарю, как синхронизировть операции там.
     
  15. ptnk

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

    Баллы:
    173
    Вот с чего это вдруг обычный игрок сразу будет юзать операции по работе с вещью с двух серверов сразу?
    Любые операции с mysql проходят за доли секунды, значит, нужно контролить ситуации, когда одно обращение получает и удаляет, а второе обращение получает фиг с маслом.
     
  16. Автор темы
    Lapos213

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

    Баллы:
    103
    ну дак что? плагин будет или невозможно его сделать?
     
  17. ptnk

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

    Баллы:
    173
    возможно сделать.
     
  18. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Я тут набросал каркас на гитхабе (ItemMoveSQL), подскажешь что делать чтобы те два обращения гарантированно прошли друг за другом и никак ещё?
     
  19. ptnk

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

    Баллы:
    173
    Расскажи мне, как человек может находится на двух серверах одновременно и юзать команду? >.<
     
    ВремяПриключений нравится это.
  20. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    берёшь короче обычный майнкрафт и заходишь сначала на один сервер, потом открываешь ещё майкрафт и заходишь на другой сервер, юзаешь команду. И если два сервера привязаны к одной базе, то хрен занет что может произойти.
     

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