Custorm alarm spawning enemies

T

Teodor Hristov

Guest
Hi there, i am trying to spawn enemies from a custom alarm.I need after the first wave spawn,spawn the second and etc. But after the first nothing happends.How can i modify this? :confused:

CREATE event

//wave1
wave = 5;
alarm[wave] = spawn_rate;
spawn_rate = 10
/////////////////////////////////////////////////////
//wave2
wave1 = 3
alarm[wave1] = spawn_rate;
spawn_rate1 = 10


STEP event

if alarm[wave] > 0
{
alarm[wave] -= 5;
//alarm[wave] -= 1;
if alarm[wave] >= 5
{
instance_create_layer(random(650), -20,"spawner", obj_enemys)
wave -= 1;
alarm[wave] = spawn_rate;

}
}

if alarm[wave] = 0

{
alarm[wave1] -= 1;
if alarm[wave1] = 5
{
instance_create_layer(random(650), -20,"spawner", obj_enemys1)
wave1 += 1;
alarm[wave1] = spawn_rate1;
}
}
 
If I'm understanding this correctly, this is what I'd do:

//create event
wave = 0;
spawn_rate = 10;
alarm[0] = spawn_rate; <<<< or whatever alarm you want this in

//alarm[0]
switch (wave)
{case 0: instance_create_layer(random(650), -20,"spawner", obj_enemys); wave += 1; alarm[0] = spawn_rate + 10; break;
case 1: instance_create_layer(random(650), -20,"spawner", obj_enemys1); wave += 1; alarm[0] = spawn_rate + 20; break;
case 2: instance_create_layer(random(650), -20,"spawner", obj_enemys2); wave += 1; alarm[0] = spawn_rate + 30; break; <<<< and so on, and so on
case 3: instance_create_layer(random(650), -20,"spawner", obj_enemys3); break;}

By having it in the alarm event you don't need to check it each step, and can have it reset it itself as many times as there are waves of enemies.

1) Wave starts at zero, and the alarm is set in the create event.
2) When it activates it tests what wave is, and does the action. It then sets a new time for itself (spawn_rate plus whatever), increases the value of wave by one, and then exits.
3) On the final value of wave there is no call to set a new alarm time for this alarm event. So it will stop.

I think that's the same as what you're after - except for whatever values you want to be added to spawn_rate, and how many waves of enemies etc
 

jo-thijs

Member
Hi there, i am trying to spawn enemies from a custom alarm.I need after the first wave spawn,spawn the second and etc. But after the first nothing happends.How can i modify this? :confused:

CREATE event

//wave1
wave = 5;
alarm[wave] = spawn_rate;
spawn_rate = 10
/////////////////////////////////////////////////////
//wave2
wave1 = 3
alarm[wave1] = spawn_rate;
spawn_rate1 = 10


STEP event

if alarm[wave] > 0
{
alarm[wave] -= 5;
//alarm[wave] -= 1;
if alarm[wave] >= 5
{
instance_create_layer(random(650), -20,"spawner", obj_enemys)
wave -= 1;
alarm[wave] = spawn_rate;

}
}

if alarm[wave] = 0

{
alarm[wave1] -= 1;
if alarm[wave1] = 5
{
instance_create_layer(random(650), -20,"spawner", obj_enemys1)
wave1 += 1;
alarm[wave1] = spawn_rate1;
}
}
That code will throw an error, becuse you're using spawn_rate before you initialized it.
That also might have something to do with why it works once.

If I'm understanding this correctly, this is what I'd do:

//create event
wave = 0;
spawn_rate = 10;
alarm[0] = spawn_rate; <<<< or whatever alarm you want this in

//alarm[0]
switch (wave)
{case 0: instance_create_layer(random(650), -20,"spawner", obj_enemys); wave += 1; alarm[0] = spawn_rate + 10; break;
case 1: instance_create_layer(random(650), -20,"spawner", obj_enemys1); wave += 1; alarm[0] = spawn_rate + 20; break;
case 2: instance_create_layer(random(650), -20,"spawner", obj_enemys2); wave += 1; alarm[0] = spawn_rate + 30; break; <<<< and so on, and so on
case 3: instance_create_layer(random(650), -20,"spawner", obj_enemys3); break;}

By having it in the alarm event you don't need to check it each step, and can have it reset it itself as many times as there are waves of enemies.

1) Wave starts at zero, and the alarm is set in the create event.
2) When it activates it tests what wave is, and does the action. It then sets a new time for itself (spawn_rate plus whatever), increases the value of wave by one, and then exits.
3) On the final value of wave there is no call to set a new alarm time for this alarm event. So it will stop.

I think that's the same as what you're after - except for whatever values you want to be added to spawn_rate, and how many waves of enemies etc
Not entirely.
obj_enemys should be spawned 5 times, then obj_enemys1 should be spawned 3 times and so on.

I would suggest this:
Create event:
Code:
wave = 0;
max_wave = 2;
spawn_amount = [5, 3];
spawn_rate = [10, 10];
spawn_object = [obj_enemys, obj_enemys1];

alarm[0] = spawn_rate[wave];
Alarm 0 event:
Code:
instance_create_layer(random(650), -20, "spawner", spawn_object[wave]);

spawn_amount[wave] -= 1;

if spawn_amount[wave] == 0 {
    wave += 1;
}

if wave < max_wave {
    alarm[0] = spawn_rate[wave];
}
Alternatively, timelines could also be used.
 
T

Teodor Hristov

Guest
Thank you both about the help i was struggling for about 3-4 days :D :)
 
Top