И снова Массивы
|
|
dikfair | Дата: Четверг, 05 Сентября 2013, 13:18 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Сразу к вопросу.
У меня в колизии обьекта айтема и ГГ стоит такой код
if(keyboard_check(ord('I'))) { for (i=0; i<=3; i+=1) { if massiv[i]==-1 {massiv[i]=other.id_o; with other instance_destroy() break;} } }
Теперь когда инвентарь доконца наполняется и подбирает новый предмет выдает ошибку.. Соответственно мне нуно что вместе с нажатием клавиши прошла проверка на наличие пустого элемента масива и потом уже если есть то что выполняла этот код.
Помогите с кодом, логику саму я понимаю.
Объект 25 - Исследовательская игра на выживание
|
|
| |
LunarPixel | Дата: Четверг, 05 Сентября 2013, 13:24 | Сообщение # 2 |
старожил
Сейчас нет на сайте
| А что за ошибка то?! По идеи, никакой ошибки быть не должно. У тебя проверяется каждый элемент массива, если находится пустой, то в него идет запись, если пустого нет, то ничего не происходит.
|
|
| |
dikfair | Дата: Четверг, 05 Сентября 2013, 13:29 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| ___________________________________________ ERROR in action number 1 of Draw Event for object sys:
Error in code at line 18: if(GGG.massiv[i]=1) ^ at position 9: Unknown variable massiv or array index out of bounds
Объект 25 - Исследовательская игра на выживание
|
|
| |
GameMix | Дата: Четверг, 05 Сентября 2013, 13:36 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| dikfair, неизвестный массив massiv или выход за пределы массива.
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
LunarPixel | Дата: Четверг, 05 Сентября 2013, 13:37 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| А теперь весь код с GGG.massiv[i]=1 кинь ) Ошибка то не в том, что ты в первом посте написал )
|
|
| |
dikfair | Дата: Четверг, 05 Сентября 2013, 13:42 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| Код if(stats=1)//Условие стоящее до него { draw_sprite(sprite5_go,1,view_xview[0]+0,view_yview[0]+0) draw_set_alpha(1) draw_set_font(Font); draw_set_color(c_white); draw_text(view_xview[0]+10,view_yview[0]+10,"Health:" + string(GGG.heal) + "/" + string(GGG.h_max));//Здоровье draw_text(view_xview[0]+10,view_yview[0]+50,"Power:"+string(aspects));//Сила draw_text(view_xview[0]+1350,view_yview[0]+10,"Inventory");//Инвентарь draw_sprite(Iaaach,0,view_xview[0]+1430,view_yview[0]+80) draw_text(view_xview[0]+1470,view_yview[0]+65,string(GGG.i+1)+"/"+string(GGG.massiv_max+1));//Рисуем айди ячейки инвентаря draw_text(view_xview[0]+10,view_yview[0]+90,"Energy:"+string(GGG.Energy)+'/'+string(GGG.Energy_max)) if(GGG.massiv[i]=1)//Герой нашей программы { draw_sprite(sprite15,0,view_xview[0]+1430,view_yview[0]+80) } if(GGG.massiv[i]=3)//И следующее условие { draw_sprite(wood_item,0,view_xview[0]+1430,view_yview[0]+80) } Кинул его вдобавок с передыдущим и последующим чтобы уж точно =).
Объект 25 - Исследовательская игра на выживание
|
|
| |
LunarPixel | Дата: Четверг, 05 Сентября 2013, 13:47 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| А от куда у тебя в этом коде берется i? )
|
|
| |
dikfair | Дата: Четверг, 05 Сентября 2013, 13:51 | Сообщение # 8 |
почетный гость
Сейчас нет на сайте
| В Шаге я начертал следующее предназначение:(Не пытался нести никакого смысла кроме как что я написал в шаге)
Объект 25 - Исследовательская игра на выживание
|
|
| |
LunarPixel | Дата: Четверг, 05 Сентября 2013, 13:56 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| Ну тут надо глубже копнуть, что-то ты мудришь, попробуй просто так сделать:
Код for (i=0; i<=3; i+=1) { if(GGG.massiv[i]=1)//Герой нашей программы { draw_sprite(sprite15,0,view_xview[0]+1430,view_yview[0]+80) } }
Код for (i=0; i<=3; i+=1) { if(GGG.massiv[i]=3)//И следующее условие { draw_sprite(wood_item,0,view_xview[0]+1430,view_yview[0]+80) } }
|
|
| |
dikfair | Дата: Четверг, 05 Сентября 2013, 14:01 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| Ошибки теперь такой не выдает и не поднимает, но... и спрайты теперь не отображаются хД
Объект 25 - Исследовательская игра на выживание
|
|
| |
LunarPixel | Дата: Четверг, 05 Сентября 2013, 14:07 | Сообщение # 11 |
старожил
Сейчас нет на сайте
| Запиши в объекте героя:
В create:
Код for (i=0; i<=3; i+=1) { massiv[i]=-1 }
В столкновении с предметом:
Код if(keyboard_check(ord('I'))) { for (i=0; i<=3; i+=1) { if massiv[i]==-1 {massiv[i]=other.id_o; with other instance_destroy() break;} } }
В draw:
Код for (i=0; i<=3; i+=1) { if(massiv[i]==3) { draw_sprite(wood_item,0,view_xview[0]+1430,view_yview[0]+80) } }
Ну и у объекта, который будет брать герой, в create:
|
|
| |
dikfair | Дата: Четверг, 05 Сентября 2013, 14:16 | Сообщение # 12 |
почетный гость
Сейчас нет на сайте
| Думаю вот оно счастье, как тут же обнаруживаю следующую ошибку, спрайт после этого остается там рисоваться, и вторую нечего не подбираеться, но создается как буд-то баговый элемент массива ну вторая проблема это еще ладно. Вопрос что же теперь нельзя этого бедное спрайтика согнать от туда=(
Объект 25 - Исследовательская игра на выживание
|
|
| |
LunarPixel | Дата: Четверг, 05 Сентября 2013, 14:28 | Сообщение # 13 |
старожил
Сейчас нет на сайте
| Цитата (dikfair) спрайт после этого остается там рисоваться Ну а что с ним должно происходить, если ты его рисуешь!? ))
Можно только 3 раза взять предмет, после этого брать предметы больше не получится. При этом, если хоть один из этих предметов содержит id_o=3, то будет рисоваться спрайт wood_item, пока хоть одна из 3-ек хранится в массиве.
Напиши, например, в step:
Код if(keyboard_check_pressed(ord('N'))) { for (i=0; i<=3; i+=1) { if massiv[i]!=-1 {massiv[i]=-1; break;} } }
Тогда при нажатии на N массив будет постепенно очищаться от взятых предметов. Взял один предмет с id_o=3, нарисовался спрайт wood_item, нажал на N и тройка удалится из массива, а в след за ней и спрайт wood_item перестанет рисоваться. Если взял три предмета с id_o=3, то чтобы wood_item перестал рисоваться, надо все элементы массива очистить, т.е. нажать на N три раза.
Это все так, для теста и понимания )
|
|
| |
dikfair | Дата: Четверг, 05 Сентября 2013, 14:44 | Сообщение # 14 |
почетный гость
Сейчас нет на сайте
| Я немножечко ошибся на сказав тогда что отрисовка остается после того как обьект выбрасывает один из этих обьектов. Какой мне теперь код нужно чтобы если при нажатии на Б в massiv[i](это тот который видно на экране) присутствует 3, то она становилась -1 и при этом спрайт тут же перестает рисоваться.
Тобиш мне не нужно чтобы он проверял на наличие в элементах хоть где либо наличие тройки, мне нужно чтобы именно теперешнее i проверялось, а не полностью массив и рисовал спрайт в зависимости от его айди.
Теперь мне вообще не понять того что находиться в инвентаре и сколько=(... А начиналось все с простого бага переполненого инвентаря... хелп ми плиииз=(((.(При попытке вернусь то что у меня раньше стояло в отрисовке выводит ошибку которая была только при перенаполнении инвентаря). Простыми словами ошибка из переполненого инвентаря теперь воообще выдаеться из-за присутствия инвентаря на екране...
UPD: Все вернул на круги своя, старый баг тоже вернулся. Мне нужно чтобы код проверял только тот элемент масивая который выбран, код на его выбор работает и выбирает нормально переключая массивы, так вот в зависимости от того элемента масива чтовыбран и отображался спрайт. Как мне правильно написать это условие.
Объект 25 - Исследовательская игра на выживание
Сообщение отредактировал dikfair - Четверг, 05 Сентября 2013, 15:08 |
|
| |
CreatingOver | Дата: Четверг, 05 Сентября 2013, 17:33 | Сообщение # 15 |
ColdGamedev
Сейчас нет на сайте
| С переполненным инвентарем проблемы не вижу. И да, судя по коду ты.. Ээ я не очень понял с частью кода with other. Ты уничтожаешь элемент массива? Игрока? Событие? Вещи? Я что-то со школы сегодня туплю. Объясни подробнее.
Я снова с вами:з Возвращение легенды. (нет)
|
|
| |
dikfair | Дата: Четверг, 05 Сентября 2013, 19:39 | Сообщение # 16 |
почетный гость
Сейчас нет на сайте
| Спасиб за попытку помочь, но я уже разобрался.. Ошибка состояла в том что создавался левый массив который был выше максимального, и его не кто не мог отрисовать так как его в тоже самое время и не сущствовало. После сна в несколько часов, моя голова на свежий ум подсказала мне прописать в ходе игрока код на тот случай когда элементы масива создаються выше предела он возвращает ему циферку предела. Не самый лучший вариант но рабочий.
Объект 25 - Исследовательская игра на выживание
|
|
| |