Как сделать инвентарь

Добавил пользователь Дмитрий К.
Обновлено: 29.08.2024

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

Все очень легко и просто. Инвентарь представляет собой набор ячеек, пронумерованных и связанных друг с другом. Слоты для одежды персонажа также представляют собой набор ячеек, но не связанных между собой. В любой игре любые наборы чего-либо реализуются в виде массивов.

Массив – это как раз и есть набор отдельных ячеек. А тип этих ячеек определяет тип хранимой информации:

· String – текстовая информация.

· Integer – хранятся целые числа.

· Char – в одной ячейке может быть лишь один символ.

· Real – хранит дробные числа.

Итак, мы разобрались, что данные мы будем хранить в массивах. Теперь определимся с типом данных и размером массивов. Допустим у нашего героя находится рюкзак (инвентарь), рассчитанный на 5 ячеек. Значит и наш массив будет также рассчитан на 5 ячеек. Нумеровать ячейки мы будем с нуля. Информацию мы будем хранить целочисленную. Каждая цифра будет показывать номер вещи, которая лежит в ячейке. Если ячейка пуста – в ячейке хранится цифра ноль.

Поэтому первым делом объявляем наш массив для инвентаря:

Inventar:array[0..4] of integer;

Переменная I необходима, чтобы в цикле обнулить наш массив, так как он пустой. Можно делать это без цикла, но зачем писать больше строчек кода. Обнуляем наш инвентарь:

Как же теперь добавлять предметы в рюкзак (инвентарь) героя? Заполнение должно происходить при торговле когда мы покупаем артефакты, при нахождении артефактов (вещей) или при других вариантах. Мы рассмотрим вариант когда герой наступает на артефакт и он попадает в наш инвентарь.

Допустим у нас имеется массив карты Map [ I , j ] и массив артефактов Arts [ I , j ]. Тогда при движении персонажа мы в массиве Map проверяем может ли герой наступить на следующую ячейку, а в массиве Arts проверяем не находится ли в следующей ячейке какого-нибудь артефакта.

Например у нас есть на карте ячейки:

Наш герой не может ходить по воде (к примеру). Значит при движении делаем следующую проверку:

В нашем случае x и y – это координаты клеточки, на которую хочет стать наш персонаж. Если в массиве карты с координатами х и у содержится цифра больше нуля (а значит там нет воды) – передвигаем героя в нужную клетку.

А теперь сразу после проверки на воду, делаем проверку на артефакты (вещи):

If Arts[x,y]>0 then

If (Inventar[i]=0) and (Arts[x,y]>0) then

В нашем случае если в массиве с вещами оказывается какая-либо вещь (массив содержит цифру больше нуля) – номер этой вещи присваиваем в первую свободную ячейку, а клеточку массива вещей обнуляем, чтобы предмет пропал с карты.

А что делать если в каждой ячейке может храниться несколько вещей одного типа, например 3 лука или 10 стрел, или 2 золотых монеты. В таком случае наш массив инвентаря должен быть двухмерным. То есть должен содержать два уровня. Первый (верхний уровень) у нас будет работать также как и раньше – будет содержать номера вещей, а второй уровень (нижний) будет содержать количество предметов. Поэтому массив инвентаря будет выглядеть так:

Inventar:array[0..4, 1..2] of integer;

Теперь первая цифра означает номер ячейки, а вторая номер уровня. Например:

Inventar [1,1] – отображает номер вещи если она есть

Inventar [1,2] – отображает количество вещей

Теперь проверка на артефакты также изменится следующим образом:

If Arts[x,y]>0 then

If (Inventar[I,1]=0) and (Arts[x,y]>0) then

If (Inventar[I,1]= Arts[x,y]) and (Arts[x,y]>0) then

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

На этом предлагаю закончить нашу работу с инвентарем. Главное Вы поняли смысл работы с ним. Останется только выводить графику самого инвентаря и вещей, находящихся в нем. Но как это сделать мы уже говорили в предыдущих статьях.

Следующий вопрос, волнующий нас – это как вещи с инвентаря одевать в слоты одежды на персонажа? Для начала также создадим массив для слотов одежды:

Dress : array [0..4] of integer ;

Как видно из кода выше, мы имеем лишь четыре слота для одежды. Это лишь для примера. Условимся, что:

· Первый слот – головные уборы

· Второй слот – нагрудники

· Третий слот – обувь

· Четвертый – оружие в руке

Также Вы заметили, что массив одномерный. Это потому что нам нужно знать лишь номер артефакта, а его количество и так не может быть больше единицы. Оно или надето или его нет вообще. Хотя возможны случаи если нужно отображать время до поломки оружия или нагрудника или степень поломки, также можно отображать харктеристики одежды типа анти-магия, защита и так далее. Для этого мы просто можем добавить дополнительные уровни в массив и все. Но мы не будем так углубляться.

В начале наш массив также должен быть обнулен, так как одежды нет на герое. Затем, чтобы одеть одежу нам нужно кликнуть по картинке одежды в рюкзаке и сделать проверку может ли данная вещь быть надета на персонажа, если да, то в какой слот для одежды и не занят ли он?

Условимся, что номера 1-20 – это головные уборы, 21-30 – нагрудники, 31-40 – обувь, 41-60 – это оружие, 61-100 – другие вещи. Допустим, что мы знаем по какому слоту инвентаря кликнул игрок (например по слоту 2), тогда проверка будет следующая:

If (Inventar[2]>0) and (Inventar[2]

Эта проверка сделана для головных уборов. В нашем случае мы сразу одеваем предмет и обнуляем ячейку инвентаря даже если там таких предметов несколько. Следующая проверка для нагрудников:

If (Inventar[2]>20) and (Inventar[2]

If Inventar[2,2]=0 then Inventar[2,1]:=0;

Для нагрудников проверка сделана более правильно. Сначала мы одеваем артефакт, затем в ячейке с артефактом уменьшаем количество предметов на единицу. Затем проверяем если предметов там уже нет, то есть храниться ноль – удалям предмет из инвентаря вообще. Таким же образом делаем и для других вещей.

Еще одетые предметы могут добавлять какие-то характеристики персонажу. В таком случае при одевании нужно сделать проверку на номер вещи и определить что она добавит. Рассмотрим подобный вариант с оружием в реку. Допустим что мы знаем, что оружие с номером 61 добавляет силу +5. Тогда пишем так :

If (Inventar[2]>20) and (Inventar[2]

if Inventar[2]=61 then Personazh.Sila:= Personazh.Sila+5;

If Inventar[2,2]=0 then Inventar[2,1]:=0;

Еще очень важный аспект – не забывайте при снятии артефактов уменьшать характеристики персонажа, которые они добавляли ему. Иначе можно будет просто много раз одевать предмет и до бесконечности прокачивать главного героя.

На этом у меня все. Я конечно же не смог поговорить и показать все, что можно сделать. Но зато Вы уже будете иметь преставление о том как сделать инвентарь для персонажа, как с ним работать, как сделать слоты для одежды и как их одевать на персонажа артефакты из рюкзака. Все спасибо за внимание и удачи в создании игр на делфи!

И так обязательная фича всех рпг направленых карт это инвентарь. стандартный инвентарь на 6 слотов стал слишком маленьким в сравнении с растущими запросами.

  1. Простой Инвентарь
  2. Инвентарь (не занимающий место на карте)

Единственное объединяющее все инвентари это то что нам предстоит сделать 2 вида объектов. Первый это предмет на основе руны, поднял и он исчез, а второй это юнит который будет играть роль предмета в инвентаре.

Самый простой инвентарь для игры. Для него нам потребуется отметить гденибудь с краю карты инвентари всех игроков. сделаем его на 25 слотов размером 5х5. и с функциями:
а) Двойной клик по предмету - предмет выкидывается из инвенторя.
б) Предметы в инвентаре перемещаются.

aHeroOfPlayer[ ] - это у нас переменная типа "боевая еденица", будет содержать в себе главного героя игрока, где массив это номер игрока

itemfaketype[] - переменная типа "тип предмета" содержит все предметы-руны, массив это порядковый номер предмета.

itemunittype[] - переменная типа "боевая еденица" содержит все предметы-юниты, массив это порядковый номер юнита.

номер массива у itemfaketype и itemunittype должен быть один и тот же, так же предмет-руна должен быть такой же как и предмет-юнит.

Следующим создадим триггер при которм если юнит использует предмет-руну в нашем инвентаре появлялся предмет-юнит:

Теперь добавим эффекты от поднятого предмета. Сделаем при поднятии "Боевых Когтей" +12 к атаке. Для этого надо создать способность или копировать существующую, так как у нас инвентарь на 25 слотов то делаем ей 25 уровней и создадим переменную массив "count" .Добавим в первый триггер конструкцию выделенную красным:

Вот. Ну и следующим сделаем чтобы эффект убирался если предмет вкинуть из инвентаря. Для него нам следует добавить во второй триггер конструкцию выделенную красным:

Если вы хотите обновить Ваш сервер новыми доработками - то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

San Andreas Multiplayer Mobile

Хотите разнообразить свою игру в San Andreas для телефона? Смелее в наш раздел. Играйте с удовольствием

Заблокирован

Всем доброго времени суток господа и дамы.

Сегодня я хочу вам показать/научить как делаются инвентари [Подобие RakNet]
В пером уроке вы сделаем показ Инвентаря и Сделаем ядро нашего инвентаря.

Ну чтож давайте начнем ко всем new:

Здесь будет содержатся вся информация об объектах в инвентаре.

Далее добавим еще пару переменных:

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

Далее мы добавим сами TextDraw'ы в public OnPlayerConnect вставьте:

Теперь сделаем чтобы наш игрок смог открыть инвентарь, для этого в public OnPlayerKeyStateChange вставьте:

Ну а теперь создадим саму функцию:

В pInfo добавьте:

Далее в public OnPlayerConnect(playerid):

Теперь перейдем к главному сделаем передвижение объектов инвентарю, в OnPlayerClickTextDraw вставьте:

Все теперь мы можем перетаскивать наш объект по инвентарю, далее добавим еще основных функций:

На этом уроке все вы можете проверить то что мы сделали для этого вставьте команду:

Введите её в игре а после откройте инвентарь и проверяйте!


1. Если будут ошибки пишите.
2. Прошу сильно не кусаться )
3. От + Сика не откажусь.
4. Скоро будет следующий урок.

Ссылка на видео:

О нас

"Pawno Info" - портал о программировании номер один. Начните с нами изучать эти великолепные и бесконечные виртуальные миры. Научитесь создавать функции и скрипты используя наши уроки по программированию на различных языках. Задавайте вопросы которые Вас интересуют и получайте ответы от наших профессионалов. Будьте с нами. Будьте там, где лучшее.


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

Как работает обмен

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

  1. Первая возможность, открывающаяся пользователю – заработок! Вы можете находить на форумах и торговой площадке выгодные предложения и выставлять свой инвентарь, предварительно узнав его стоимость;
  2. Вторая возможность – обмен ненужных предметов на другие, более необходимые для игр.

Именно поэтому вы должны знать, как открыть инвентарь в Стиме для обмена. Если предметы будут скрыты настройками приватности, поучаствовать в торговых операциях не получится!

Выбираем правильные настройки

Прежде чем обмениваться предметами, вам нужно сначала открыть инвентарь в настройках профиля Стим! Это несложно, потратите несколько минут времени и справитесь с поставленной задачей. Читайте нашу инструкцию!

В браузере

Получить доступ к необходимым настройкам можно через браузер – не придется запускать десктопный клиент. Сделайте следующее:


  • Найдите в меню справа иконку с нужным названием;



  • Найдите нужную иконку с подробным описанием – предметы, коллекционные карточки и подарочные копии продукта;
  • Здесь вы можете выбрать один из трех вариантов приватности – только для друзей, скрытый или открытый;
  • Выберите нужный вариант (открытый или для друзей, если вы не хотите меняться с посторонними пользователями);
  • Убедитесь, что напротив названия появилось нужное значение;
  • Внесенные изменения сохранятся автоматически.


Вы смогли сделать инвентарь Steam открытым! Кстати, подарки можно скрыть отдельно, хотя другие предметы будут видны – просто поставьте галочку в соответствующем окне, когда будете выбирать параметр приватности.

В приложении

Переходим к следующему шагу – как открыть инвентарь в Стиме (КС ГО или другие игры) через клиент для рабочего стола. Никаких сложностей:





Всерьез настроились на обмен? Вы узнали, как сделать публичный инвентарь в Стим – пора найти знаниям практическое применение!

Как обмениваться

Сначала напомним – для полноценной работы на торговой площадке необходимо снять ограничение. Платформа накладывает его на всех новых пользователей, расширить функционал можно, задонатив минимум пять долларов. Вы можете положить их на баланс, потратить на покупки.

Все ограничения сняты, вы смогли открыть инвентарь в Стим и готовы к обмену? Работаем в приложении:

Давайте немного поговорим о том, почему не открывается инвентарь в Стиме! С этим могут столкнуться все пользователи, лучше подготовиться заранее.

Возможные проблемы

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

По каким причинам иногда не грузит инвентарь в Стиме и что можно сделать в браузере?


Вы узнали, как сделать инвентарь публичным в Steam – несложно, согласитесь? Надеемся, наши советы помогли открыть предметы и выйти на обмен с выгодными условиями! Играйте, наслаждайтесь и наращивайте скиллы в любимых играх – для этого и создана платформа.

Читайте также: