dikfair | Дата: Среда, 12 Ноября 2014, 17:54 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Для тех кто не хочет анализировать, а моментально попытаться дать ответ, вопрос подсвечен зеленым цветом.
И так, как не странно у меня при создании игры возник интересный вопрос. Для начала чтобы вы смогли дать мне ответ на мой вопрос, или же тыкнуть пальцем в мое упущение, я кратко опишу ситуацию. У меня есть игра, песочница, вид сверху, в ней есть что характерно для песочницы - сундук. Этот сундук представляет собой обьект который при создании создает сразу же обьект своего инвентаря который в свою очередь создает ячейки, и потом тут же мгновенно их деактивирует. Когда игрок таки додумается нажать ПКМ по сундуку, то он активирует все это, естественно каждый сундук при создании своего "внутреннего мира" задает ему имя: Код myinv=instance_create(x+35-70,y+35-70,chestinv) Ну и в будущем использует это имя для удобной работы с ним. Так как у меня игра имеет свой мир в котором есть разного вида обитатели со своим интелектом каждый, дроп который не пропадает, а вечно лежит на полу, блоки из который обустраивается соб-но лагерь или база игрока и все это заставило меня использовать довольно привычный код: Код {instance_activate_all();instance_deactivate_region(view_xview[0],view_yview[0],view_wview[0],view_hview[0],false,true);} И все бы хорошо, но после введения этого кода, в момент создания второго сундука игра повисает и как я понял за счет создания беспрерывного и возможно нарастающего цикла, но я его не обнаружил. Ведь чтобы активировать тот же инвентарь сундука системный обьект должен изменить пкм-ом переменную(это сделано для того чтобы выше упомянутый код не активировал инвентарь сундука сам по себе. В общем инвентарь работает нормально и неактивируется пока я его не попрошу. Но второй сундук я создать не могу, хотя если удалить код про активацию то сразу же все становиться отлично и все сундуки работают прекрасно.
По скольку в обьекте ссундука не используется событие шаг, и в создании нет нечего кроме давания имя инстансу, я не буду обращать сильное внимание ему.
А вот инвентарю сундука уделю больше внимания так как я понимаю что именно из за него создается этот грузоцикл. В создании: Цитата a1=instance_create(x+5,y+5,chiach) a2=instance_create(x+5,y+37,chiach) a3=instance_create(x+5,y+69,chiach) b1=instance_create(x+5,y+101,chiach) b2=instance_create(x+37,y+5,chiach) b3=instance_create(x+37,y+37,chiach) c1=instance_create(x+37,y+69,chiach) c2=instance_create(x+37,y+101,chiach) c3=instance_create(x+69,y+5,chiach) d1=instance_create(x+69,y+37,chiach) d2=instance_create(x+69,y+69,chiach) d3=instance_create(x+69,y+101,chiach) f1=instance_create(x+101,y+5,chiach) f2=instance_create(x+101,y+37,chiach) f3=instance_create(x+101,y+69,chiach) g=instance_create(x+101,y+101,chiach)
Шаг: Код if !collision_circle(x,y,150,GGG,false,false){global.mouserclick=0}if global.mouserclick=0 {instance_deactivate_object(self) instance_deactivate_object(a1) instance_deactivate_object(a2) instance_deactivate_object(a3) instance_deactivate_object(b1) instance_deactivate_object(b2) instance_deactivate_object(b3) instance_deactivate_object(c1) instance_deactivate_object(c2) instance_deactivate_object(c3) instance_deactivate_object(d1) instance_deactivate_object(d2) instance_deactivate_object(d3) instance_deactivate_object(f1) instance_deactivate_object(f2) instance_deactivate_object(f3) instance_deactivate_object(g) }
Начальный шаг: instance_activate_object(a1) instance_activate_object(a2) instance_activate_object(a3) instance_activate_object(b1) instance_activate_object(b2) instance_activate_object(b3) instance_activate_object(c1) instance_activate_object(c2) instance_activate_object(c3) instance_activate_object(d1) instance_activate_object(d2) instance_activate_object(d3) instance_activate_object(f1) instance_activate_object(f2) instance_activate_object(f3) instance_activate_object(g)
В ячейках так же нет никаких проблем, так как они задействованы далеко не только в сундуке, а и в других вещах которые проблем не вызывают. Но в этих самых других вещах они уничтожаются, а не деактивируеться, и хотя одно из решений вытекает само-собой: Использовать удаление, а не деактевацию Мне нужно и я задаюсь вопросом, либо как мне активировать все исключая определенный предмет?
Именно его "не активировать" ежесекундно, а не тут же "деактивировать".
Как мне дать для команды instance_activate_all(); исключение?.
Объект 25 - Исследовательская игра на выживание
Сообщение отредактировал dikfair - Среда, 12 Ноября 2014, 17:55 |
|
| |
Overdrave | Дата: Воскресенье, 16 Ноября 2014, 19:43 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| Циклы для слабаков? |D У меня в игре объект (gui_chest), содержащий айтемы объекта сундука (chest) и представляющий из себя сетку 5х6 из объектов o_case, записанных в массив, создавался с комнатой и был невидим. Любые действия с объектом (gui_chest) имели проверку на видимость (т.е. с этим объектом нельзя было взаимодействовать, пока он невидим) При "открытии" сундука (т.е. когда персонаж подходил к сундуку (chest) и нажимал Enter) этот объект (gui_chest) "заполнялся" айтемами из сундука и становился видимым. Объект сундука синхронизировался с объектом "показа" сундука (gui_chest), т.е.когда игрок вытаскивал что-либо из сундука, то соответствующие изменения происходили и в сундуке (chest). При закрытии сундука "связь" обрывалась, а объект отображения (gui_chest) снова становился невидимым.
Если собираешься сохранять свой способ с активацией/деактивацией, то почему бы просто не деактивировать все эти объекты вручную сразу после их активации?
|
|
| |