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

Lapos213

Старожил
Пользователь
Баллы
103
Итак готова альфа-версия
https://github.com/Shevchik/ItemMoveSQL
Немного инструкций.
В конфиге вы найдёте настройки относящиеся к подключению к mysql.
Если пользователь подключающийся к mysql не может создавать БД, то переключите checkbd : false;
также в конфиге есть переменная ограничивающя максимальное количество вещей хранимая игроком в БД.
Убедитесь что все настройки правильные и плагин не сыпет стактрейсам при старте.
команды:
/imsql add - добавляет предмет руке в базу данных (id и subid, остальная информация не сохраняется)
/imsql view - показывает принадлежашие вам предметы в базе
/imsql get {Номер вещи в БД} - забирает из БД вещь под данным номером, если она вам принадлежит.

Проблемы которые есть, но я пока не стал их решать: Если вещей уже максимум в бд для этого игрока, но игрок всё равно решит положить вещь, то она отнимется, а потом вернётся, но если инвентарь был в этот момент был полон то вещь пропадает.

При получении вещи, если инвентарь полон, то вещь теряется, поэтому держите свободное место в инвентаре.

Если эта версия будет более-менее работать,то будем пилить дальше.

Вот скрипт вывода блоков для этого плагина под DLE
Установка:
1. Залить папку в корень сайта
2. Открыть файл conn.php и настроить.
3. Создать статическую страницу
и добавить в неё код
Код:
{include file="view/index.php"}

для добавления картинок и название перейдите по ссылке http://you-site.ru/view/edit.php. Если картинок не будет, отображает Место картинки No Img, место имени блока id:subid и команду для получения
 
На разработку сейчас нет времени. Самому слишком много нужно написать.
В данной теме просто сказал что задача слишком легка для такой цены.
Легка настолько, что плагин будет состоять не более чем из 50 - 100 строк.
 
На разработку сейчас нет времени. Самому слишком много нужно написать.
В данной теме просто сказал что задача слишком легка для такой цены.
Легка настолько, что плагин будет состоять не более чем из 50 - 100 строк.
Не так то все просто.
Во первых, работа с БД предусматривает знание sql.
Во вторых, нельзя выполнять запрос к БД в главном потоке. Мы же не хотим повесить сервер при отказе базы ;-)
И самый главный вопрос: как же сохранять item meta в базу? Грубо говоря, все теги, начиная от енчантов, заканчивая цветами фейерверка. Если кто-нибудь даст достойный ответ, я напишу этот плагин бесплатно =)
 
Не так то все просто.
Во первых, работа с БД предусматривает знание sql.
Во вторых, нельзя выполнять запрос к БД в главном потоке. Мы же не хотим повесить сервер при отказе базы ;-)
И самый главный вопрос: как же сохранять item meta в базу? Грубо говоря, все теги, начиная от енчантов, заканчивая цветами фейерверка. Если кто-нибудь даст достойный ответ, я напишу этот плагин бесплатно =)
Выносить работу с базой в отдельный поток я уже примерно научился. Насчет item meta - видел где-то плагин, который сохранял предметы в файл а ихнюю мету преобразовывал в массив значений.
{name: x, name2: y}
что-то подобное.

На самом деле я не подумал о мете совсем. Но если удастся преобразовать все данные в массив - восстановить их не должно составить труда.
 
На самом деле я не подумал о мете совсем. Но если удастся преобразовать все данные в массив - восстановить их не должно составить труда.
Мету можно преобразовать в байтовый поток, а также восстановить ее из потока. Все данные легко переводятся в byte[], и даже можно применить сжатие. Но вот проблема: размер массива может быть совершенно любой. А может его вообще не быть. Задача сводится к оптимальному хранению данных произвольной длины. Хотя мб есть и другие варианты.
 
Не так то все просто.
Во первых, работа с БД предусматривает знание sql.
Во вторых, нельзя выполнять запрос к БД в главном потоке. Мы же не хотим повесить сервер при отказе базы ;-)
И самый главный вопрос: как же сохранять item meta в базу? Грубо говоря, все теги, начиная от енчантов, заканчивая цветами фейерверка. Если кто-нибудь даст достойный ответ, я напишу этот плагин бесплатно =)
Я по поводу своего плагина задавал вопрос насчёт мета-даты, но потерял свою тему. Ission тогда помог мне.
 
Можете объяснить что собой представляет методата? и что будет если методаты не будет?
В ванильном майне - это зачарование + что-то там про цвета фейерверка... Некоторые моды имеют какой-то странный формат хранения данных (К примеру батарейки из ic2 - заряженную вещь проблематично сохранить).
Самый грубый вариант - это сохранить id:id.
 
В ванильном майне - это зачарование + что-то там про цвета фейерверка... Некоторые моды имеют какой-то странный формат хранения данных (К примеру батарейки из ic2 - заряженную вещь проблематично сохранить).
Самый грубый вариант - это сохранить id:id.
а вы можете сделать с id:id?
 
,
 
Последнее редактирование:
Отличная подстава от нотча: прочность вещи и субайди блока - одно и то же.
И методату хрен сохранишь.

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

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

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

Если нормального решения так и не предложат, то делаю как есть в ограничением настраиваемым в конфиге.
 
Такс, вместе с асинхронным обращением к бд вылезла куча проблем.
Особенно когда сразу с 2х серверов пытаешься вещь взять или положить.
Есть тут спецы по mysql? А то я вообще в этом не шарю, как синхронизировть операции там.
 
Такс, вместе с асинхронным обращением к бд вылезла куча проблем.
Особенно когда сразу с 2х серверов пытаешься вещь взять или положить.
Есть тут спецы по mysql? А то я вообще в этом не шарю, как синхронизировть операции там.
Вот с чего это вдруг обычный игрок сразу будет юзать операции по работе с вещью с двух серверов сразу?
Любые операции с mysql проходят за доли секунды, значит, нужно контролить ситуации, когда одно обращение получает и удаляет, а второе обращение получает фиг с маслом.
 
ну дак что? плагин будет или невозможно его сделать?
 
Расскажи мне, как человек может находится на двух серверах одновременно и юзать команду? >.<
 
Расскажи мне, как человек может находится на двух серверах одновременно и юзать команду? >.<
берёшь короче обычный майнкрафт и заходишь сначала на один сервер, потом открываешь ещё майкрафт и заходишь на другой сервер, юзаешь команду. И если два сервера привязаны к одной базе, то хрен занет что может произойти.
 
Назад
Верх