Вторник, 26 Ноября 2024, 07:03

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблема с инвентарем
poksДата: Суббота, 14 Июня 2014, 21:52 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Делая инвентарь, столкнулся с проблемой. При поднятии первого предмета, он хорошо отображается в ячейке, но если поднять больше двух, то последующие не будут отображаться, однако кол-во их выводится.

В Create инвентаря:
Код
w = 5;
slot_x = sprite_width;

for(i = 0; i < w; i++){
sprite[i] = 0; //Спрайт предмета
name[i] = ''; //Название предмета
object[i] = 0; //Индекс объекта
number[i] = 0; //Кол-во предмета
max_number[i] = 0; //Максимальное кол-во
}


В Draw инвентаря:
Код
x=view_xview+64;
y=view_yview+415;

x=view_xview+64;
y=view_yview+415;

draw_set_font(c_white);
for(i = 0; i < w; i += 1){
draw_sprite(sprite_index,image_index,x+i*slot,y); //Отрисовываем ячейки
if(name[i] != ''){ //Если в инвентаре что-то есть
draw_sprite(sprite[i],image_index,x+(i+0.3)*slot,y+(i+0.3)*slot); //Отрисовываем предмет
draw_text(x+i*slot,y,number[i]); //Отрисовываем количество
}
}   


Перетаскивание предмета в инвентарь осуществляется за счет объекта родителя. Как я понимаю, в нем и есть ошибка.
В столкновении с игроком в родителе, который присваивается остальным предметам:
Код
for(i = 0; i < o_inv.w; i++){
if(o_inv.name[i] == ''){ //Если предмета нет
o_inv.sprite[i] = sprite_index; //Присваиваем спрайт
o_inv.object[i] = object_index; //Присваиваем индекс объекта
o_inv.name[i] = name; //Присваиваем имя
o_inv.max_number[i] = maxnumber; //Присваиваем макс. кол-во
o_inv.number[i]++; //Прибавляем предмет на единицу
instance_destroy(); //Удаляем предмет
exit;
}

if(o_inv.name[i] == name){ //Если предмета нет
if(o_inv.number[i] < maxnumber){ //Если стак не полный
o_inv.sprite[i] = sprite_index; //Присваиваем спрайт
o_inv.object[i] = object_index; //Присваиваем индекс объекта
o_inv.name[i] = name; //Присваиваем имя
o_inv.max_number[i] = maxnumber; //Присваиваем макс. кол-во
o_inv.number[i]++; //Прибавляем предмет на единицу
instance_destroy(); //Удаляем предмет
exit;
}
}
}


Когда-то давно видел подобную реализацию инвентаря у Два_Кота. Скрин проблемы ниже (синее - предмет, кол-во - черным в верхнем левом углу).





Сообщение отредактировал poks - Суббота, 14 Июня 2014, 21:53
OverdraveДата: Суббота, 14 Июня 2014, 23:43 | Сообщение # 2
частый гость
Сейчас нет на сайте
Не уверен, что сработает, но попробуй убрать строчку
Код
o_inv.sprite[i] = sprite_index; //Присваиваем спрайт
(13-ая строчка в событии столкновения объектов родителя)

UPD:
Я попробовал у себя - всё работает исправно.


Сообщение отредактировал Overdrave - Воскресенье, 15 Июня 2014, 00:22
  • Страница 1 из 1
  • 1
Поиск:

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