Game Maker - создание игр | HellRoom Games
Февраль 16, 2025, 15:54:00 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1] 2 3 ... 28   Вниз
  Печать  
Автор Тема: Пример инвентаря  (Прочитано 283006 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dva_Kota
Гл. Администратор
*

Репутация: 636
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« : Февраль 24, 2011, 20:43:47 »

Пример инвентаря.

Авторы: Dva_Kota, bodimir, Alexis

Небольшой пример инвентаря с подробными комментариями (на русском языке).
Этот пример был сделан для игры Wonderful World Armatrit. Теперь он модифицирован для игры The Heroes of Stream - Wolrand и к нему добавлен инвентарь экипировки – можно надевать различные вещи и предметы на игрока.
Всю графику для примера рисовал Alexis.

Я видел не так уж мало примеров инвентаря, но все они мне не очень нравились. Там было много кода (если в инвентаре достаточно функций) и чтобы его как-то изменить (изменить количество ячеек изменить их размер и т.д.) нужно было «бродить» по скриптам, добавлять кучу строк для каждой новой ячейки, причем добавлять строки нужно в разные скрипты и разные места кода. Может быть, есть более удобные в использовании инвентари, просто я их не видел. По этой причине пришлось создавать свой инвентарь, который можно легко добавлять в любые проекты, практически ничего не меняя…

Прошу обратить внимание на то, что предметы в инвентаре не являются объектами. При перемещении «предмета» в инвентарь происходит следующее: параметры объекта записываются в массивы, а сам объект удаляется из комнаты. В событии рисования объекта obj_inv происходит просто рисование спрайтов объектов, перемещенных в инвентарь, в соответствии с данными из массивов. Когда «выбрасываем» «предмет» из инвентаря – создается объект, данные которого записаны в ячейку массива, соответствующую ячейке инвентаря, в которой находился «предмет». Когда перетаскиваем «предмет» из одного инвентаря в другой – значения массива первого инвентаря переписываются в массив второго инвентаря. Это следует учитывать, например, если вам нужно подсчитать количество объектов в комнате – объекты в инвентаре не будут учитываться. Дальше под понятием «предмет» следует понимать несколько массивов, содержащих данные объекта, а под понятием «объект» сам объект ГМ.











Ниже приведены примеры как можно еще модифицировать инвентарь:
 








Удаление и использование предметов из инвентаря при нажатии клавиши (на версии 1.0064 не тестировалось, но работать должно аналогично)

Горячие клавиши для конкретных слотов (для версии 1.0028 )

Двойной инвентарь

Двойной инвентарь, второй вариант (в разработке)

Как сделать в инвентаре подсветку ячеек при наведении курсора (для любой версии)

Инвентарь крафта и обычный (здесь ничего конкретного, только идеи и общий принцип, но, возможно, кто-то сможет это применить)

Пример инвентаря, в котором присутствует крафт
Автор крафта Reylor

Во вложении еще один пример (1.0028), в котором инвентарь находится в отдельной комна

« Последнее редактирование: Январь 23, 2013, 01:30:51 от Dva_Kota » Записан

VeGaS
«Старожил форума»
******

Репутация: 270
Offline Offline

Пол: Мужской
Награды:
2000 сообщений!За постоянность! [200 дней на форуме]За лояльность! [+150 репутации]3 место за игру: AntiZombie (Конкурс Золотые Руки)1 место: Звание лучшего дизайнера (Февраль 2011)За добавление полезных программ!
API: GameMaker Studio Standard
Сообщений: 2018



« Ответ #1 : Февраль 24, 2011, 20:44:28 »

О, ну вы круты ;) Может когда-нибудь мне пригодиться
Записан
Vendet
Гл. Администратор
*

Репутация: 772
Offline Offline

Пол: Мужской
API: Unity 3D
Сообщений: 3949


HellRoom Games


WWW
« Ответ #2 : Февраль 24, 2011, 21:28:59 »

Инвентарь отличный, еще бы открывать его на клавишу I, было бы круто 
Полезный пример, да еще с документацией и комментариями, заслуживает  Уважуха
Записан
De_Joker
Посетитель
**

Репутация: 8
Offline Offline

Пол: Мужской
API: Game Maker 8.0 Lite
Деятельность: Студент
Сообщений: 49


« Ответ #3 : Февраль 24, 2011, 21:32:40 »

О! Классно.  Уважуха Пригодится, может не скоро, но пригодится.
Заметил один баг. Берём 3 одинаковых предмета. В сумке появляется три этих предмета в одной ячейке. Выкидываем их из сумки. Подбираем их снова. В сумке уже один предмет. Где ещё два?
Записан

Мы не боимся
С 24.06.2014 дома.
Dva_Kota
Гл. Администратор
*

Репутация: 636
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #4 : Февраль 24, 2011, 21:58:09 »

Кстати да... De_Joker, спасибо, сейчас исправлю...
Записан

S_Kleer
GM Pro user
*

Репутация: 567
Offline Offline

Награды:
За лояльность! [+500 репутации]3 место в Дичайшем джеме #82000 сообщений!За постоянность! [50 дней на форуме]Настоящий игродел!2 место на HellRoom Jam #5, Контраст...
API: GameMaker Studio 2
Сообщений: 2734


« Ответ #5 : Февраль 24, 2011, 22:18:21 »

У меня что-то вообще ничего не работает.  :(
Мне надо что-то самому добавлять?
Записан

Коты - Мирители
Dva_Kota
Гл. Администратор
*

Репутация: 636
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #6 : Февраль 24, 2011, 22:29:59 »

Вообще не запускается? Добавлять ничего не надо вроде бы.
Залил новый инвентарь:
- Исправил баг (это я оптимизацией увлекся и удалил лишнюю строку  :o );
- добавил привязку к видам (на всякий случай);
- добавил кнопку, при клике на которую можно показать/скрыть инвентарь. Так же можно это сделать нажатием клавиши "I"

Добавлено: Февраль 24, 2011, 22:32:56
Плюсики это, конечно, приятно... Но я этот пример не один делал...
Записан

S_Kleer
GM Pro user
*

Репутация: 567
Offline Offline

Награды:
За лояльность! [+500 репутации]3 место в Дичайшем джеме #82000 сообщений!За постоянность! [50 дней на форуме]Настоящий игродел!2 место на HellRoom Jam #5, Контраст...
API: GameMaker Studio 2
Сообщений: 2734


« Ответ #7 : Февраль 24, 2011, 22:37:14 »

Также...
Может я такой нуб?
Я не могу положить смайлик в инвентарь...
Всё перепробывал (за исключением клавиш), но ничего не помогает.

Добавлено: Февраль 24, 2011, 22:39:17
Ах вот оно что!
Тут оказывается игрок, которым нужно управлять.  ;D

Меня точно нубнуло.   
Записан

Коты - Мирители
Dva_Kota
Гл. Администратор
*

Репутация: 636
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #8 : Февраль 24, 2011, 22:46:05 »

Можно событие столкновения с игроком заменить на нажатие клавиши мышки  ;D
Записан

S_Kleer
GM Pro user
*

Репутация: 567
Offline Offline

Награды:
За лояльность! [+500 репутации]3 место в Дичайшем джеме #82000 сообщений!За постоянность! [50 дней на форуме]Настоящий игродел!2 место на HellRoom Jam #5, Контраст...
API: GameMaker Studio 2
Сообщений: 2734


« Ответ #9 : Февраль 24, 2011, 22:49:13 »

Записан

Коты - Мирители
Alcatraz
Flight Dream Studio
«Старожил форума»
******

Репутация: 392
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [100 дней на форуме]За лояльность! [+300 репутации]Знаток Unity 3D3 место в конкурсе: Адекватные игры #2 [Стимпанк]2 место за игру: Dead Night (Конкурс Золотые Руки)...
API: Unity 3D
Деятельность: C#, C++, UNITY3D
Сообщений: 3392


http://vk.com/alcatraz_rus


WWW
« Ответ #10 : Февраль 24, 2011, 23:07:47 »

Довольно интересный пример! Отлично! ;)
Записан

illidan
Участник
****

Репутация: 10
Offline Offline

Пол: Мужской
API: Game Maker 8.0 Pro
Деятельность: ...
Сообщений: 114

Архимаг


« Ответ #11 : Февраль 27, 2011, 18:21:08 »

Я скачал но вот тоео жаль запускатся отказывается(( :'(
Записан

"Во тме ночной, при свете дня, злу не укрыться от меня!"
SilentPhil
Norland
GM Pro user
*

Репутация: 479
Offline Offline

Пол: Мужской
Награды:
Первое место на HellRoom Jam #7 [Hell in Your Fridge]500 сообщений!За постоянность! [50 дней на форуме]За лояльность! [+150 репутации]Настоящий игродел!Второе место на HellRoom Jam #6 [По следам Артакса]...
API: GameMaker Studio 2
Деятельность: GML, Pixel Art
Сообщений: 1363



WWW
« Ответ #12 : Февраль 27, 2011, 19:10:36 »

Код:
___________________________________________
ERROR in
action number 1
of Draw Event
for object obj_inv:

Error in code at line 29:
       if (txt[klick_x,klick_y]!='' && txt[klick_x,klick_y]!='empty')//если слот, на который наведен курсор, не пустой
           ^
at position 10: Unknown variable txt or array index out of bounds

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

         
Да, на них можно кликать.
Dva_Kota
Гл. Администратор
*

Репутация: 636
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]За лояльность! [+500 репутации]Настоящий игродел!Тру Админ :D1 место за игру: Energy Wars (Конкурс Золотые Руки)...
API: GameMaker Studio Standard
Сообщений: 3245



« Ответ #13 : Февраль 27, 2011, 22:48:37 »

эта ошибка в той версии которая сейчас выложена или ты скачал еще когда я только создал тему. В той версии которая была сначала эта ошибка была когда быстро двигаешь мышь и нажимаешь кнопку. Там координаты ячейки вычислялись один раз в драв, и, на сколько я понял, когда происходило событие рисования курсор был еще не над инвентарем, а при клике уже над инвентарем, и получалось что такого элемента массива не существует. В этом примере я вычисляю координаты и в драв и в событии рисования. Пока что не удалось получить такую ошибку... Но если у тебя она возникла в последней версии (1.0025) то я пока что не нашел в чем именно причина. У кого-то еще такое было?

Добавлено: Февраль 27, 2011, 23:01:08
И еще важный момент: ошибка появилась при клике правой кнопкой или просто при наведении курсора?
Записан

MegaDimon
GM Pro user
*

Репутация: 74
Offline Offline

Пол: Мужской
Награды:
1000 сообщений!За постоянность! [10 дней на форуме]
API: GameMaker Studio Pro
Деятельность: Gml, Pixel Art
Сообщений: 1260


CreaQtrex


« Ответ #14 : Февраль 27, 2011, 23:02:54 »

 Уважуха
Записан
Страниц: [1] 2 3 ... 28   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.254 секунд. Запросов: 34.