Воскресенье, 16 Мая 2021, 20:39

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Вопрос - Ответ (Game Maker) (Будут пополняться)
Вопрос - Ответ (Game Maker)
ApptendoДата: Понедельник, 11 Января 2016, 19:29 | Сообщение # 5541
был не раз
Сейчас нет на сайте
Ребят, помогите.
У меня код выдает ошибку, помогите исправить.
{
repeat (5) instance_create(random(400), random(400), obj_enemy_1);
}

FATAL ERROR in
action number 1
of Create Event
for object obj_enemy_1:

PerformEvent recursion depth failure - check for infinite loops, check objects for parenting
at gml_Object_obj_enemy_1_CreateEvent_1 (line 5) - repeat (5) instance_create(random(400), random(400), obj_enemy_1);
YellowAfterlifeДата: Понедельник, 11 Января 2016, 19:46 | Сообщение # 5542
Сейчас нет на сайте
Цитата Apptendo ()
Ребят, помогите.
У меня код выдает ошибку, помогите исправить.
{
repeat (5) instance_create(random(400), random(400), obj_enemy_1);
}

FATAL ERROR in
action number 1
of Create Event
for object obj_enemy_1:

PerformEvent recursion depth failure - check for infinite loops, check objects for parenting
at gml_Object_obj_enemy_1_CreateEvent_1 (line 5) - repeat (5) instance_create(random(400), random(400), obj_enemy_1);

Почему у тебя каждый obj_enemy_1 создает еще 5 таких же объектов? Это какая-то fork-бомба, получается. Может, ты хотел создать 5 врагов из какого-то вспомогательного объекта?


ApptendoДата: Понедельник, 11 Января 2016, 19:58 | Сообщение # 5543
был не раз
Сейчас нет на сайте
Цитата YellowAfterlife ()
Почему у тебя каждый obj_enemy_1 создает еще 5 таких же объектов? Это какая-то fork-бомба, получается. Может, ты хотел создать 5 врагов из какого-то вспомогательного объекта?

Ну по идеи, он ведь должен создавать 5 врагов в рандомной области, разве нет?
YellowAfterlifeДата: Понедельник, 11 Января 2016, 20:14 | Сообщение # 5544
Сейчас нет на сайте
Цитата Apptendo ()

Ну по идеи, он ведь должен создавать 5 врагов в рандомной области, разве нет?

Объект создает 5 врагов в области.
Каждый из этих 5 врагов создает еще 5 врагов.
Каждый из созданных этими 5-ю врагами 25 врагов создает еще 5 врагов.
Каждый из созданных этими 25-ю врагами 125 врагов создает еще 5 врагов
...
Программа отображает ошибку, чтобы не довести систему до краха.


ApptendoДата: Понедельник, 11 Января 2016, 20:16 | Сообщение # 5545
был не раз
Сейчас нет на сайте
Цитата YellowAfterlife ()
Объект создает 5 врагов в области.
Каждый из этих 5 врагов создает еще 5 врагов.
Каждый из созданных этими 5-ю врагами 25 врагов создает еще 5 врагов.
Каждый из созданных этими 25-ю врагами 125 врагов создает еще 5 врагов
...
Программа отображает ошибку, чтобы не довести систему до краха.

Понял, а как исправить то?
YellowAfterlifeДата: Понедельник, 11 Января 2016, 20:43 | Сообщение # 5546
Сейчас нет на сайте
Цитата Apptendo ()
Понял, а как исправить то?

Цитата YellowAfterlife ()
Может, ты хотел создать 5 врагов из какого-то вспомогательного объекта?

То есть буквально - сделать вспомогательный объект, который будет создавать врагов, и расставлять экземпляры этого объекта.


dildo_bomberДата: Четверг, 14 Января 2016, 11:28 | Сообщение # 5547
частый гость
Сейчас нет на сайте
Здравствуйте! Я новичек в ГМ и столкнулся с проблемой.
в игре, что я делаю, есть объект obj_fire1 и два спрайта для него spr_fire1 и spr_fire1_crit
в событии столкновения obj_enemy01 с пулей, я хочу сделать проверку на спрайт и исходя из спрайта отнять 5 хп или 15.
но я никак не могу сделать ту самую проверку. как такое можно провернуть?

вот код, которым я попытался хоть что-то сделать:
(событие "столкновение с obj_fire1")

{
switch(sprite_index)
 {
   case spr_fire1:
     hp -= obj_control_vars.dmg // -5 хп
   case spr_fire1_crit:
     hp -= obj_control_vars.dmg_crit // -15 хп
 }
}


Сообщение отредактировал dildo_bomber - Четверг, 14 Января 2016, 11:39
LuxorixДата: Четверг, 14 Января 2016, 14:25 | Сообщение # 5548
постоянный участник
Сейчас нет на сайте
dildo_bomber, ты проверяешь свой спрайт поэтому и не работает. switch(other.sprite_index) вот так пробуй

LUXORIX GAMES
dildo_bomberДата: Четверг, 14 Января 2016, 16:59 | Сообщение # 5549
частый гость
Сейчас нет на сайте
Luxorix, спасибо, помогло! я уже так писал, но тогда код по другому выглядел, вот и не сработало.


вопрос отпал. т.е. через other. - я обращаюсь к объекту, с которым идёт столкновение в данный момент, так? (если говорить про событие столкновения)


Сообщение отредактировал dildo_bomber - Четверг, 14 Января 2016, 17:12
LuxorixДата: Четверг, 14 Января 2016, 18:13 | Сообщение # 5550
постоянный участник
Сейчас нет на сайте
dildo_bomber, да верно, через other можно обращаться к другому объекту, с которым столкнулся.

LUXORIX GAMES
MrVasLukДата: Пятница, 15 Января 2016, 23:56 | Сообщение # 5551
участник
Сейчас нет на сайте
Простите за нубский вопрос, но как сделать get_open_filename с двумя форматами? Просто давно не юзал и забыл, как это пишется правильно.
Именно, чтобы в окне открытия они подписывались как один.
Допустим, в окне открытия отображается "Sprite files" и при выборе отображаются сразу и PNG и GIf.

P.S. в гугле и справке был неоднократно, ни одной подсказки.


увеличь популярность своего проекта/канала YouTube/странички вк:
FREE Social Promotion
YellowAfterlifeДата: Суббота, 16 Января 2016, 02:20 | Сообщение # 5552
Сейчас нет на сайте
Цитата MrVasLuk ()
Простите за нубский вопрос, но как сделать get_open_filename с двумя форматами? Просто давно не юзал и забыл, как это пишется правильно.
Именно, чтобы в окне открытия они подписывались как один.
Допустим, в окне открытия отображается "Sprite files" и при выборе отображаются сразу и PNG и GIf.

P.S. в гугле и справке был неоднократно, ни одной подсказки.

get_open_filename("Images|*.png;*.gif|All files|*.*","")


MrVasLukДата: Суббота, 16 Января 2016, 13:29 | Сообщение # 5553
участник
Сейчас нет на сайте
спасибо

увеличь популярность своего проекта/канала YouTube/странички вк:
FREE Social Promotion
dildo_bomberДата: Среда, 20 Января 2016, 10:56 | Сообщение # 5554
частый гость
Сейчас нет на сайте
у меня еще вопрос.
не могу понять, как можно провернуть всплытие текста при столкновении объектов.
например - когда пуля попадает во врага, хотел сделать всплывание нанесённого урона.

draw_text(x,y-10,dmg)
draw_color(c_white);

знаю, что так. но не получается. если пихать это в событие "столкновение" объекта пули, то текст не показывается.
а в событии draw не знаю, как сделать появление текста при уничтожении объекта. т.е. как сделать проверку на уничтожение.

кто-нибуть может подсказать, как такое реализовать? может есть другие способы какие
Raven84Дата: Среда, 20 Января 2016, 11:45 | Сообщение # 5555
старожил
Сейчас нет на сайте
dildo_bomber, Да нет других способов. Все события рисования должны быть только в Draw, иначе они просто не сработают!
Элементарно введи переменную, к примеру showtxt. В событии Create врага пиши showtxt=0. В событии столкновения врага с пулей showtxt=1. В событии Draw врага вставляем код:
if showtxt=1 {draw_text(x,y-10,dmg)}
Вот и все. Только в событии Draw еще перед кодом нужно вставить блок для отрисовки самого спрайта врага, иначе его видно не будет. Такой квадратик с человечком (draw self вроде).
Но опять же при этом способе текст будет высвечиваться постоянно после попадания. Как дальше сделать надеюсь уже сам догадаешься. Можно таймер ввести, после которого текст исчезает или еще что придумать.


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland
dildo_bomberДата: Четверг, 21 Января 2016, 16:18 | Сообщение # 5556
частый гость
Сейчас нет на сайте
Raven84, спасибо за идею!
попробовал вписать всё к объекту пули.

т.е.: при уничтожении showtext = 1

в draw:

draw_self()
if showtext = 1 {draw_text(x,y-10,string(dmg)}

но текст ни в какую не хочет показываться.
что бы и где бы я не хотел вывести на экран.
возможно ли, что просто тригер не срабатывает? или у текста какая-то своя глубина, которую я не учёл
что может быть не так?


Сообщение отредактировал dildo_bomber - Четверг, 21 Января 2016, 17:21
MrVasLukДата: Суббота, 23 Января 2016, 20:26 | Сообщение # 5557
участник
Сейчас нет на сайте
Помогите найти ошибку в коде:
Код
if global.test=1
{
if music!=""
{
if file_exists(string(working_directory)+'\data\music\'+music+'.waw')
{musfile=sound_add(string(working_directory)+'\data\music\'+music+'.waw',0,false)
sound_loop(musfile)}
else
{show_message("Missing "+string(music)+".waw#Please,check our filename for mistakes or disable music in menu.#Game will be stopped.");global.test=0}}}
else
{sound_stop(musfile)}


при запуске кода:
Global.test равен 1
music равен musica
В директории"папка с игрой\data\music" лежит файл musica.waw

Однако, приложение не может найти этот файл и выдает ошибку через show_message.


увеличь популярность своего проекта/канала YouTube/странички вк:
FREE Social Promotion
BrightSpotДата: Суббота, 30 Января 2016, 12:17 | Сообщение # 5558
заслуженный участник
Сейчас нет на сайте
MrVasLuk, если не ошибаюсь, не балуйся с одинарными кавычками в путях...

Добавлено (30 января 2016, 12:17)
---------------------------------------------
dildo_bomber, удаленный объект не будет рисовать... попробуй вместо удаления поставить таймер(достаточный что бы показать всплывающее сообщение),а в драв:

if showtext = 1 {draw_text(x,y-10,string(dmg)}
else draw_self();



Более мощный компьютер глючит быстрее и точнее.
MrVasLukДата: Суббота, 30 Января 2016, 13:26 | Сообщение # 5559
участник
Сейчас нет на сайте
Немного не понял вас...
GM8 почему-то вообще начал шалить с файловой системой: пишу directory_create(string(program_directory)+string(gamename))
И неважно, какие значения у переменных, директорию гмс не создает...


увеличь популярность своего проекта/канала YouTube/странички вк:
FREE Social Promotion
Raven84Дата: Суббота, 30 Января 2016, 13:42 | Сообщение # 5560
старожил
Сейчас нет на сайте
dildo_bomber,
Цитата
но текст ни в какую не хочет показываться

А ошибку никакую не выдает?
Тут много может быть причин не отображения текста. Нужно для начала выяснить еще что за переменная dmg, где она задается, в каком объекте и т.д.?
Во-первых, переменная dmg глобальная? (вообще глобальные переменные записываются так: global.dmg ,если ранее объявлены не были) Она задается в объекте пули, раз вы этот код там вписываете?
Во-вторых, не совсем понял почему вы записываете (x,y-10,string(dmg)), а не (x,y-10,dmg)? Может я конечно уже многого не помню. С текстом мало работаю и нужно лезть в справку. Но пока лень. Но вроде второй вариант вернее.
Короче, нужно сам код смотреть полностью. А вам не мешало бы еще и справку полистать. Там хоть и все на английском, но разобраться можно.


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Вопрос - Ответ (Game Maker) (Будут пополняться)
Поиск:

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