Инвентарь на основе массива

Favourite 63 favourites
Tutorial written by WaltanOriginally published on 7th, July 2013 - 5 revisions

Translation Team:

2 total revisions

Создание инвентаря в массиве

Теперь давайте создадим парочку предметов в нашем инвентаре.
Добавьте 21 монетку во вторую ячейку и 3 яблока в четвертую.

Как я уже говорил, ID предмета должно быть на 1 больше, чем его кадр анимации. Это нужно для того, чтобы в инвентаре не было предметов с ID = 0, так как 0 - это пустая ячейка.

Так же, если вы захотите добавить объект с количеством 1, то не поленитесь добавить эту единичку в массив, иначе этот предмет не будет складываться с другими, ведь, формально, его количество = 0.

Теперь наступает самая сложная часть туториала, но я обещаю, что дальше будет проще %)

Теперь нам нужно визуально отобразить наш инвентарь.
Для этого я использую придуманный мной алгоритм:


(картинка в оригинальном размере есть в прикрепленных файлах)

Но все не так сложно как кажется.

Преимущество этого алгоритма в том, что он автоматически делит ячейки на линии. То есть, если у вас всего 15 ячеек и вы хотите 5 в каждой линии, то он автоматически их разделит.

Пожалуй, самая "страшная" часть алгортима это эта формула:

Давайте подробнее ее разберем:
X = (((inventory.curx)-(sn(a-1)))ss)+tx

- inventory.curx - текущая ячейка в массиве, при использовании For Each Element цикла

- sn - количество ячеек в 1 линии

- a - переменная, необходимая для последующих вычислений. Она увеличивается на 1 каждый раз когда inventory.curx MOD (остаток от деления одного числа на другое) sn = 0

- ss - размер ячейки инвентаря (32 + отступ между ячейками (2)) = 34

- tx - мой алгоритм не идеален, так что приходится вычитать некоторые числа из координат, чтобы получить необходимое значение. tx and ty и есть эти "некоторые числа".

Формула, по которой вычисляется tx:

Мой алгоритм полностью открыт для критики. Я буду рад услышать ваши отзывы по улучшению его работы :S

Итак, сначала этот алгоритм создает ячейку инвентаря, и задает значения переменным, согласно массиву

/ Небольшая поправка. Не смотря на то, что массив начинается с 0, ID у созданных ячеек будут начинаться с 1. /

После, он проверяет наличие объекта по значению в массиве в inventory.curx.
Если значение > 0, значит объект существует и тогда он его создает.
Поэтому я говорил вам использовать ID объектов больше 0.


В конце, он проверяет количество этого объекта. Если количество > 0, то в переменную объекта записывается эта информация, и вместе с этим, он создает объект Text, который отображает переменную item.number.
Open full size image

Share and Copy this Tutorial

You are free to copy, distribute, transmit and adapt this work with correct attribution. Click for more info.

Comments

0
nikita632 3,764 rep

Прекрасный урок. Но есть пару вопросов.
Как сделать, что бы изначально инвентарь был пустой. Вроде бы я так делаю, но потом, когда я складирую предметы они записываются в массив, но не отображаются в слотах.
Как выровнять инвентарь по центру экрана?

Tuesday, December 31, 2013 at 1:20:31 PM

Leave a comment

Everyone is welcome to leave their thoughts! Register a new account or login.