О действиях, переменных и др.
|
|
никита | Дата: Среда, 12.08.2015, 22:33 | Сообщение # 1 |
Мастер
Группа: Модераторы
Сообщений: 532
Награды: 0
Репутация: 51
Статус: Offline
| Создам отдельную тему, т.к. в главной теме не приходит ответ уже пару дней. Давно я тут не появлялся, но сейчас я на даче, тут проц Intel Celeron... Ничего кроме гамака не идет, даже на нем игры лагают. Вот я и снова залез в него. Собственно, к чему я это веду. Три вопроса: 1. У меня есть много похожих объектов и один их "родитель", т.е. parent. В событии create родителя этих объектов прописан какой-то код. И вот такая проблема. Этот код применяется ко всем объектам кроме тех, у которых есть собственный код в событии create. Поэтому мне приходится постоянно дублировать код из родителя объектов в сами объекты. Это не очень удобно. Как можно этого избежать? 2. Есть объект, у него есть события create и destroy. В create записана переменная des, которая принимает значения true или false в зависимости от ситуации. Так вот, в destroy стоит проверка значения этой переменной, и если она равна true, выполняется какое-то действие. Но вот беда: запускаю игру и вылезает ошибка подобного рода Код action number 1 of Destroy Event for object blockparent:
Error in code at line 1: if des = true ^ at position 4: Unknown variable des Код ошибки говорит, что в событии destroy находится неизвестная переменная des. Т.е. инициализация переменной происходит после события destroy. Что с этим можно сделать? 3. Есть код, создающий систему частиц. Буду краток. Частицы создаются позади всех объектов в комнате, даже если глубину поменять. Нужно, чтобы они появлялись на переднем плане. Что делать?
ВАСЕЧКА - Попугай
Сообщение отредактировал Volk - Понедельник, 01.02.2016, 14:47 |
|
| |
BRESS | Дата: Пятница, 14.08.2015, 20:24 | Сообщение # 2 |
Мастер-ломастер
Группа: Администраторы
Сообщений: 3120
Награды: 1
Репутация: 224
Статус: Offline
| Цитата никита ( ) Это не очень удобно. Как можно этого избежать? Никак.
Цитата никита ( ) Есть объект, у него есть события create и destroy. В create записана переменная des, которая принимает значения true или false в зависимости от ситуации. Можно код из события Create?
Цитата никита ( ) Нужно, чтобы они появлялись на переднем плане. Ты пользовался part_type_death?
Для ваших вопросов по Game Maker есть специально созданный форум. Оставьте в покое мою личку. Спасибо за внимание!
|
|
| |
sasha | Дата: Пятница, 14.08.2015, 22:06 | Сообщение # 3 |
Очень почетный титул
Группа: Проверенные
Сообщений: 216
Награды: 3
Репутация: 86
Статус: Offline
| Постойте-ка, а как же event_inherited() ? пруф
|
|
| |
никита | Дата: Суббота, 15.08.2015, 14:50 | Сообщение # 4 |
Мастер
Группа: Модераторы
Сообщений: 532
Награды: 0
Репутация: 51
Статус: Offline
| Цитата sasha ( ) Постойте-ка, а как же event_inherited() ? Спасибо, помогло. Теперь дублировать код не приходится. Впервые слышу об этой функции Цитата BRESS ( ) Можно код из события Create? Это проблему я уже решил, но немного более трудным способом. Изменять я уже ничего не хочу, но узнать все же будет полезно. Собственно, код в Create довольно большой, к тому же, как я говорил раньше, я его изменил. Но все же он был примерно таким: Код gen = false des = true if global.create = true then gen = true if gen = false { move_snap(16,16) y+=8 if instance_place(x,y,blockparent) { des = false instance_destroy() } if global.place=0 { if !instance_place(x+16,y,blockparent) && !instance_place(x-16,y,blockparent) && !instance_place(x,y+16,blockparent) && !instance_place(x,y-16,blockparent) { des = false instance_destroy() } } } Ну а про событие Destroy я уже говорил. Мне нужно узнать, как сначала инициализировать переменную, а затем только через запросить ее в Destroy. Цитата BRESS ( ) Ты пользовался part_type_death? Нет. Если это поможет, вот код: Код ps = part_system_create() pt = part_type_create() part_type_alpha1(pt,random_range(0.5,0.8)) part_type_size(pt,0.3,0.5,0,0) part_type_gravity(pt,0.6,270) part_type_life(pt,25,35) part_type_sprite(pt,sprite_index,0,0,0) part_type_direction(pt,20,160,0,0) part_type_speed(pt,1,2,0,0) em = part_emitter_create(ps) part_emitter_region(ps,em,x,x+16,y,y+16,pt_shape_square,0) part_emitter_burst(ps,em,pt,irandom_range(4,10)) Спасибо за ответ!
ВАСЕЧКА - Попугай
|
|
| |
BRESS | Дата: Воскресенье, 16.08.2015, 19:57 | Сообщение # 5 |
Мастер-ломастер
Группа: Администраторы
Сообщений: 3120
Награды: 1
Репутация: 224
Статус: Offline
| Цитата sasha ( ) Постойте-ка, а как же event_inherited() ? пруф Не знал. Прошу прощения.
Цитата никита ( ) Нет. Если это поможет, вот код: Ну так воспользуйся этой функцией )
Для ваших вопросов по Game Maker есть специально созданный форум. Оставьте в покое мою личку. Спасибо за внимание!
|
|
| |
никита | Дата: Воскресенье, 16.08.2015, 22:15 | Сообщение # 6 |
Мастер
Группа: Модераторы
Сообщений: 532
Награды: 0
Репутация: 51
Статус: Offline
| Цитата BRESS ( ) Ну так воспользуйся этой функцией Ты кажется чего-то напутал) part_type_death не может глубину изменить. Короче, сам разобрался. Нужно было всего лишь написать part_system_depth, а я эту функцию не знал, все пытался изменить глубину через тип частиц.
ВАСЕЧКА - Попугай
|
|
| |
BRESS | Дата: Вторник, 18.08.2015, 20:07 | Сообщение # 7 |
Мастер-ломастер
Группа: Администраторы
Сообщений: 3120
Награды: 1
Репутация: 224
Статус: Offline
| Цитата никита ( ) Ты кажется чего-то напутал) part_type_death не может глубину изменить. Короче, сам разобрался. Нужно было всего лишь написать part_system_depth, а я эту функцию не знал, все пытался изменить глубину через тип частиц. Позабывал, видно, я уже всё. Просто давно Game Maker не пользуюсь. Мб, выпустят вторую версию Студии ближе к Январю, вновь займусь Гамаком :)
Для ваших вопросов по Game Maker есть специально созданный форум. Оставьте в покое мою личку. Спасибо за внимание!
|
|
| |