Пятница, 26 Апреля 2024, 21:18

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Scirra Construct » Инвентарь Diablo II (Как создать инвентарь на подобии как в Diablo II?)
Инвентарь Diablo II
SAMCROДата: Суббота, 09 Июня 2012, 14:01 | Сообщение # 1
частый гость
Сейчас нет на сайте
Пока только так придумал. Всего 1 день сидел придумывал...

Мой багованый вариант

На старом форуме есть вот такое вот. Автору огромное спасибо, лучше бы он подписался, потому что имени его не запомнил.

Сложный но очень грамотный вариант умного человека (не без багов)

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


Сообщение отредактировал SAMCRO - Суббота, 09 Июня 2012, 14:26
JSentДата: Суббота, 09 Июня 2012, 14:46 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Лучше свой дорабатывай, толку больше будет.
Ты хочешь инвентарь точно такой же, как в Диабло?


Программист — человек, больной тяжёлой формой поражения коры головного мозга — интеллектом, который выражается в маниакально-деструктивном стремлении писать непонятные и бессмысленные наборы символов и словосочетаний.
SAMCROДата: Понедельник, 11 Июня 2012, 02:20 | Сообщение # 3
частый гость
Сейчас нет на сайте
Quote (JSent)
Ты хочешь инвентарь точно такой же, как в Диабло?

Желательно такой же. Желательно с возможностью крафта по типу хорадрик куба.
Обычно самый простой способ и есть самый верный, нересурсозатратный.

Допер вот до такого, пока ждал ответов:

Багованый исходник (кто может исправьте)

Проблема в том, что если лут не лезет в сумку он спавнится рядом с гг (типо вываливается). При этом если в одном месте вываливается два одинаковых спрайта, система считает их как один, поэтому лут исчезает, что крайне непреятно, если вешч, допустим, рарная.

Добавлено (10.06.2012, 01:03)
---------------------------------------------
я уже плохо соображаю, но, видимо, придется разбираться с исходником с оффсайта. Потому, что чтобы доработать мой придется сделать его сложнее, чем тот который уже прописан. Завтра буду вникать что там к чему.

Добавлено (10.06.2012, 23:26)
---------------------------------------------
Почесал репу и сделал так:
Диабло инвентарь от умного человека переделаный мной.
Проблем сразу несколько. При Атрибуте destroy on startup Лут не сохраняется...
При нахождении лута он спавнится только рядом с хероем (а не в сумку) и при етом меняется его угол.

Думается надо ввести переменные,
При соприкосновении или соприкосновении и тыке мышью на предмет (это уж можно выбирать как кому нравится, сделать эти варианты для меня не проблема) -> Переменная меняется -> предмет появляется в рюкзаке, если там есть место, если там места нет -> вываливается обратно.

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

Добавлено (11.06.2012, 00:38)
---------------------------------------------
уффф

Добавлено (11.06.2012, 02:06)
---------------------------------------------
Я все равно сделаю грамотный инвентарь и выложу его в этой теме, которая превратилась в мой маленький блог.

Добавлено (11.06.2012, 02:20)
---------------------------------------------
Krizalis автор, если ошибся поправьте.

Сообщение отредактировал SAMCRO - Суббота, 09 Июня 2012, 15:52
DemixДата: Понедельник, 11 Июня 2012, 12:55 | Сообщение # 4
Pixel Fire Software™
Сейчас нет на сайте
SAMCRO, надеюсь что выложишь рабочий вариант , интересно посмотреть book

Мои проекты:
Spell Castle Bricks [Android]
O'er! [Android]
SAMCROДата: Среда, 20 Июня 2012, 15:05 | Сообщение # 5
частый гость
Сейчас нет на сайте
Хочу чтобы массив появлялся на том месте где я хочу и тогда когда я хочу. А не так:
Исходник
Кто может посоветуйте...

Добавлено (13.06.2012, 16:45)
---------------------------------------------
http://www.construct-faq.ru/articles/1/7/inventar-cherez-massiv-array/
нарыл урок. Завтра буду учить...

Добавлено (19.06.2012, 15:02)
---------------------------------------------
C Массивами работать неудобно. Они всегда начинают отсчет с левого верхнего угла поля. И только там можно размещать инвентарь созданый на массиве. Это полный бред. Хотя, конечно, можно сделать массив на весь экран и мертвые сектора на всех местах где они не задействованы. Это я называю: "Сделать через ж". Я так не умею и не хочу.
Посему, решил доработать свой вариант, сделать его проще, и лучше. Пока получилось вот так вот убого:
Баг вариант номер 5

Ну кто-нибуть, подскажите что-нибудь. Если сможете...

Добавлено (20.06.2012, 13:38)
---------------------------------------------
Все бы работало, ЕСЛИ бы переменная свидетельствующая о заполнении ячейки инвентаря изменялась правильно. Тоесть, overlaps Работает криво. Он не видет, что ячейка заполнена и может запихать спрайт поверх спрайта уже находящегося в ечейке.

Добавлено (20.06.2012, 15:05)
---------------------------------------------
Неужели???!!! Свершилось. 2 Недели. Я не верю шчастью своему. Помойму работает. Оцените! Мне кажется, что я нашел. Конечно сыровато, есть что добавить, но вроде уже работает, почти как надо. Не совсем как в дьябло, но уже можно делать игру.:
Поаплодируйте моей идее.
Теперь предстоит разбираться с ini, чтобы инвентарь сохранялся, и крафтом, чтобы крафтить.
Опять же надеюсь на вашу помощь, друзья. Ведь надежда умирает, как известно, последней.

allxumukДата: Среда, 20 Июня 2012, 15:36 | Сообщение # 6
старожил
Сейчас нет на сайте
Вроде работает wink
Quote (SAMCRO)
Теперь предстоит разбираться с ini, чтобы инвентарь сохранялся

Лучше для сохранений использовать массив, он хотя бы шифрует цифры.


Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
SAMCROДата: Четверг, 21 Июня 2012, 03:18 | Сообщение # 7
частый гость
Сейчас нет на сайте
Даа, есть баг. В исходнике который выше...
А вот так его нет:
Вот так без багов.

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

Добавлено (20.06.2012, 15:46)
---------------------------------------------

Quote (SAMCRO)
Лучше для сохранений использовать массив, он хотя бы шифрует цифры.

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

Добавлено (20.06.2012, 16:17)
---------------------------------------------
Да, еще рамка, пока не работает. Инвентарь может торчать из рюкзака в разные стороны, подумаю об этом завтра.

Добавлено (21.06.2012, 03:18)
---------------------------------------------

Quote (allxumuk)
Вроде работает

Cыровато, конечно. Но сам факт, что так сделать можно меня радует. А мелкие недочеты всегда можно исправить.
Вот я и исправляю. В этом исходнике исправлено:
1. Теперь при постановке вещи на вещь из рюкзака вываливаются не все вещи, а только те которые соприкоснулись.
2. Теперь при перетаскивании вешчи в инвентарь если мы бросим ее на пол пути не донеся до рюкзака, она не останется лежать как попало а вывалется рядом с нашим гг.
Уже на что-то похоже.
Смотрим, оцениваем, делаем замечания.
AlttarBoyДата: Четверг, 21 Июня 2012, 04:40 | Сообщение # 8
почетный гость
Сейчас нет на сайте
Не плохо) , но было бы лучше еслиб вещь при перетаскивании на другую вещь, возвращалась на место где её взяли (я записывал координаты при старте Drag&Drop'a), да и авто подбор тоже можно сделать(пробежаться по ячейкам с вещью, если не оверлапит с чем либо => есть месть => бросаем здесь)
SAMCROДата: Четверг, 21 Июня 2012, 16:19 | Сообщение # 9
частый гость
Сейчас нет на сайте
AlttarBoy, ты Krizalis???
Quote (AlttarBoy)
было бы лучше еслиб вещь при перетаскивании на другую вещь, возвращалась на место где её взяли (я записывал координаты при старте Drag&Drop'a)
Ну я тоже так делал, только я записывал координаты не вещи а мыши на начало драга, потому, что мне пришлось отказаться от работы с массивами, мне показалось что ето неудобно. Могу попробовать сделать это еще раз через мышь, но получится ли? Для меня это боольшой вопрос, если не получится даже связываться не хочется - запара будет еще на неделю и, возможно не приведет к положительному результату.
Quote (AlttarBoy)
авто подбор тоже можно сделать(пробежаться по ячейкам с вещью, если не оверлапит с чем либо => есть месть => бросаем здесь)
Вот это легче сделать не прибегая к массиву, можно подумать.

Собственно массив мне всеравно придется вводить для сохранения инвентаря, и надеюсь, только для этого...

Наиболее животрепещущие темы для меня:
1. Сохранение инвентаря (мешает мое плохое отношение к массивам, совершенное незнание InI) нид хелп.
2. Скрыть-показать инвентарь (Тут можно через слой, показать-скрыть слой с инвентарем). Вчера пробовал, пока безрезультатно.
В игре должны присутствовать так же контейнеры, чтобы они работали как рюкзак и чтобы из них можно было перетащить вешч в рюкзак.
3. Сделать крафт на подобии, хорадрик куба (возможно тоже придется InI и array вводить, хотя может через переменные попробовать?).
4. Чтобы мелкие вешчи, типа патронов стековались.
И уже потом.
5. Доработать саму механнику, которая уже худо-бедно работает. Может, в процессе решения первых 4х задач, решится и 5 ая.

От помощи или совета никогда не отказываюсь. Спасибо, всем кто пишет.
AlttarBoyДата: Четверг, 21 Июня 2012, 16:26 | Сообщение # 10
почетный гость
Сейчас нет на сайте
Quote (SAMCRO)
AlttarBoy, ты Krizalis???

Нееет )))

вот, может тебе пригодятся некоторые моменты)
http://construct-faq.ru/topic....razmera


Сообщение отредактировал AlttarBoy - Четверг, 21 Июня 2012, 16:27
SAMCROДата: Понедельник, 25 Июня 2012, 18:51 | Сообщение # 11
частый гость
Сейчас нет на сайте
Да, еще рамка, пока не работает. Инвентарь может торчать из рюкзака в разные стороны, подумаю об этом завтра.

Добавлено (23.06.2012, 01:28)
---------------------------------------------
Исходник AlttarBoy лучший, на мой взгляд. Очень хочу работать именно с его исходником. Но..

Херов массив как я уже и говорил начинает отсчет с верхнего левого угла окна и никак иначе. Нафих-нафих.
Жаль Как вылечить эту ерунду я не знаю. А если я хочу рюкзак в другом месте, а если перетаскивать лут из контейнера в рюкзак??? Как массив может это осилить??? Я не понимаю. Убивать сектора? или как?

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

Не хочется возвращаться к своему исходнику. Он мне нравится куда гораздо меньше чем исходник AlttarBoy

Добавлено (23.06.2012, 01:45)
---------------------------------------------
Инвентарь по типу дьяблы1-2 сделать не так трудно.
А вот засунуть его в игру, для меня проблема не меньшая, а большая Чем просто его создать.
Тоесть создать вообще уже давным давно не проблема.

Добавлено (23.06.2012, 18:21)
---------------------------------------------
Исправляю одно, другое ломается.

Добавлено (25.06.2012, 14:38)
---------------------------------------------
Встроить в игру исходники метров очень сложно, все они базируются на массивах, а значит все прикручены к левому верхнему углу экрана. При такой механнике перетаскивание лута из контейнера в рюкзак не представляется возможным, потому что и контейнер и рюкзак созданные с применение массива будут помещены в одном месте, в левом верхнем углу экрана.
Я создал исходник без массива, но с ним тоже большие проблемы: Как сохранить вещи находящиеся в рюкзаке-контейнере без массива?
А потом как сделать чтобы, рюкзак открывался и закрывался. Проблема в том, что если делать это помещая рюкзак на другой слой и делая его видимым-невидимым предметы лежащие на другом слое все равно оверлапятся с клетками невидимого рюкзака. Ну допустим, можно ввести условие при котором вещи меняют анимацию с лежачей на рюкзачную, только когда рюкзак становится видимым. Либо когда переходят на слой рюкзака что, возможно правильнее. Да ето сделать достаточно легко. А когда вешчи переходят на слой рюкзака? Когда они с ним оверлапятся, при условии, что рюкзак видимый. Логично.Самое простое объяснение.
А если вещь уже лежит в зоне пока невидимого рюкзака, то как только рюкзак становится видимым вешч неминуемо попадет в рюкзак, с всеми вытекающими от сюда багами. Чайник мой кипит.

Добавлено (25.06.2012, 16:25)
---------------------------------------------
Прихожу к мнению, что все инвентари по типу Д1-2, и мой в том числе, при всем уважении к афторам, сделаны на отбибись. Они сделаны не для того, чтобы вставить их в игру и радоваться. Они сделаны для того чтобы заработать себе +. Сделаны без учета работы с более чем одним контейнером инвентаря, без учета скрола экрана, без открывания-закрывания инвентаря. В общем без всего того, без чего невозможно сделать игру.
Да, мне интересно делать игры, а не исходники - в этом моя самая большая проблема, моя слабость, глупый я человек. Самого поражает собственная упертость с которой я пытаюсь реализовать механнику, которую, мне, возможно, реализовать не удастся. Но тем не менее. Результат месячных усилий.
Вот
wacko По прежнему, Вам благодарен, по прежнему Вам рад, по прежнему жду Вашей помощи.

Добавлено (25.06.2012, 17:23)
---------------------------------------------
Я справедливо полагал что исходник со скролом будет лагать. Вот вам доказательство.
Полюбуйтесь.
У кого есть мысли сделать исходник со скролом без багов, подскажите...

Добавлено (25.06.2012, 18:28)
---------------------------------------------
Проблему решил:
Правильный скролл

Добавлено (25.06.2012, 18:39)
---------------------------------------------
Вот так задал вопросы и половину из них решил в тот же день, вот что значит правильная постановка вопроса!!! tongue

Добавлено (25.06.2012, 18:50)
---------------------------------------------
AlttarBoy, Помоги.
1. Совершенно не понимаю как ты сделал сохранение через массив+глобалки.
2. Совершенно не понимаю применима ли такая механика сохранения к моему исходнику.
Если считаешь, что я сам разберусь, то кинь какую-нибудь обучалку по массивам.

Добавлено (25.06.2012, 18:51)
---------------------------------------------
allxumuk, С уважением, аналогичная просьба.

AlttarBoyДата: Понедельник, 25 Июня 2012, 19:14 | Сообщение # 12
почетный гость
Сейчас нет на сайте
По массивам можешь тут посмотреть

сохранение я делал перебором всех итемов в инвентаре, и сохранение их координат
примерно так:


и вот как у меня это сделанно:

при сохранении пробегаем ся по всем вещам, берем их имя\координаты и вписываем в массив, примерно как на картинке выше
ну а при загрузке наоборот смотрим на ячейку "имя", если она не равна 0, то создаем по нужным координатам нужный итем


Сообщение отредактировал AlttarBoy - Понедельник, 25 Июня 2012, 19:37
allxumukДата: Вторник, 26 Июня 2012, 12:16 | Сообщение # 13
старожил
Сейчас нет на сайте
В общем AlttarBoy всё правильно сказал, только пара замечаний:
1. Нумерация ячеек массива в Констракте начинается с 1, а не с 0, как на Рис. 1.
По "коду"
2. Цикл можно выполнять просто до "размера массива по Х", т.е. Array.SizeX.


Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
SAMCROДата: Вторник, 26 Июня 2012, 21:09 | Сообщение # 14
частый гость
Сейчас нет на сайте
AlttarBoy, Если тупо переписать события-действия сохранения - Не работает

Добавлено (26.06.2012, 15:47)
---------------------------------------------
Если не тупо переписать - подумаю завтра.

Добавлено (26.06.2012, 21:09)
---------------------------------------------
AlttarBoy, Что означает выражение (loopindex("i")?
И что такое "i"???? Такой переменной нет!

ArmaggeDroidДата: Вторник, 26 Июня 2012, 21:40 | Сообщение # 15
участник
Сейчас нет на сайте
LoopIndex - возвращает, сколько раз прошёл цикл, в твоём случае - цикл "i".

QuaDreams Team
SAMCROДата: Среда, 27 Июня 2012, 13:11 | Сообщение # 16
частый гость
Сейчас нет на сайте
AlttarBoy, allxumuk, ArmaggeDroid, Я понял, что такое Array, это чрезвычайно мощная штука через которую можно сохранить все! Положение лута в рюкзаке, положение лута лежащего на уровне, случайно сгенерированный уровень, Все глобальные переменные гг и противника. Это оччень круто, только у меня пока не получается сохрагнить. Почему?
1. Я не понимаю половины событий и действий (в частности Зачем нуден цикл).
2. Может в моем исходнике слишком много лаеров, тоесть их больше чем один?
Исходник находится в предыдущем моем сообщении, у кого есть соображения как сделать в нем сохранение через массив. Помогите.
Пока сохранение не работает, не могу понять почему именно. Подскажите.
allxumukДата: Среда, 27 Июня 2012, 13:46 | Сообщение # 17
старожил
Сейчас нет на сайте
Quote (SAMCRO)
в частности Зачем нуден цикл

Ячеек же много, не будешь же ты в ручную их заполнять? Если объектов 3, то ещё можно, а если их 300? Вот затем и нужен цикл, он делает одни и те же действия, с разными параметрами, N-ное количество раз.

Quote (SAMCRO)
Может в моем исходнике слишком много лаеров, тоесть их больше чем один?

Нет, не в этом проблема.

Проблема в именах объектов. Ошибка происходит в действии System. Create object by name.

В общем есть у тебя в исходнике Sprite11, это какой-то объект из семейства Item. У него есть переменная name, значение которой сохраняется в массив, как идентификатор объекта, который в последствии перекидывается в действие System. Create object by name... Вот здесь и ошибка, ты задал не верные значения переменных и параметры для создания объектов.
Для спрайта Sprite11, переменная name должна быть текстовой и содержать Sprite11. Для остальных Item'ов соответственно их имена.


Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
SAMCROДата: Четверг, 28 Июня 2012, 16:25 | Сообщение # 18
частый гость
Сейчас нет на сайте
Quote (allxumuk)
Для спрайта Sprite11, переменная name должна быть текстовой и содержать Sprite11. Для остальных Item'ов соответственно их имена.

так и знал, что все проще пареной репы! пасиб!!!

Добавлено (28.06.2012, 16:25)
---------------------------------------------
AlttarBoy, ArmaggeDroid, allxumuk,
Исправил, теперь сохраняется, только очень криво. Где я ошибся теперь?
Версия 13
Что то подсказывает мне что до победы всего чуть чуть мозгоа мне не хватает, прошу занять у кого есть немного лишнего.

AlttarBoyДата: Четверг, 28 Июня 2012, 18:25 | Сообщение # 19
почетный гость
Сейчас нет на сайте
Хм.. странно, почему синий итем после пересохранения становится зеленым так и не понял (еще поковыряю)
и еще надо-бы очистку массива добавить, иначе выброшенные вещи останутся в инвентаре
хотя бы так:


Сообщение отредактировал AlttarBoy - Четверг, 28 Июня 2012, 18:26
allxumukДата: Четверг, 28 Июня 2012, 18:43 | Сообщение # 20
старожил
Сейчас нет на сайте
SAMCRO, проблема опять в мелочи, причём в той же, что и в прошлый раз. В переменной name, теперь спрайта Sprite9. На уровне валяются 2 его копии, у одной в переменной name - Sprite9, как и положено, а у второй - Sprite8. Вот и происходит такая фигня.
--------------------------------

Да и очистка массива тоже хорошая идея.


Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Scirra Construct » Инвентарь Diablo II (Как создать инвентарь на подобии как в Diablo II?)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг