Понедельник, 18 Ноября 2024, 00:42

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Вопрос по активации и деактивации инстантов.
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) снова становился невидимым.

Если собираешься сохранять свой способ с активацией/деактивацией, то почему бы просто не деактивировать все эти объекты вручную сразу после их активации?
  • Страница 1 из 1
  • 1
Поиск:

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