Сообщение от
JohnConor
Я сразу это в другой таблице, а структура следующая 24 слота у инвентаря, у каждого слота 3 переменных (1 - ид хранимого слота, 2 - кол-во, 3 - различные данные о хранимых вещах)
А ничего что мод будет сохранять/считывать/изменять 72 ячейки в бд будет, мне просто показалось что хранить по рядам лучше будет?
Так а зачем под каждый слот создавать столбец, когда можно записывать слот как строку?
То бишь, таблица с инвентарём будет иметь такую структуру:
PHP код:
id //Просто ID строки. Является уникальным ключом тайблицы (AUTO_INCREMENT)
account_id // ID владельца инвентаря
slot // Номер слота из инвентаря
item // Тут хранится ID предмета
value // Тут хранится количество того предмета, что хранится в слоте
Ну и по желанию добавляешь нужные тебе столбцы
В итоге у тебя получится система, где ты можешь работать с конкретным слотом и где количество этих слотов не ограничено со стороны базы данных (для добавления нового столбца просто увеличиваешь массивы и всё).
В таблице данные будут выглядеть так:
PHP код:
1 | 12 | 0 | 1 | 30
2 | 12 | 1 | 7 | 2
3 | 12 | 2 | 7 | 5
4 | 12 | 3 | 1 | 22
5 | 12 | 4 | 9 | 11
6 | 12 | 5 | 21 | 1
7 | 12 | 6 | 1 | 30
Если слот пустой, просто не создавай/удаляй его.
Загрузка будет максимально проста:
PHP код:
SELECT slot, item, value FROM player_inventory WHERE accout_id = 12//Весь инвентарь аккаунта с ID 12
SELECT item, value FROM player_inventory WHERE accout_id = 12 AND slot = 12 //Определённый слот
Обновление данных тоже
PHP код:
UPDATE player_inventory SET item = 22, value = 1 WHERE account_id = 12 AND slot = 0//Записываем в нулевой слот инвентаря предмет с ID 22 и количеством, равным единице