Solved NPC Spawn enemy sequance.

Question that is answered or resolved.

kdo

Member
Hi guys, I need to make a NPC spawn a sequence of enemies as normally done in the level file, this should happen when the player hits the npc. Does anyone have any idea how I can do this? Has anyone done anything like this before?
 
can't find function 'spawnscreen'

😮 😮 😮

I'm surprised to read that function name. I can't recall if I ever use it before 🙄.

Alright, I'll make simple demo with Bondo and the gang in it 🙂

[Couple hours later]

Here you go:

I used Template module and added Bondo + some stuffs to show how it works.
Go to training room and hit Bondo to trigger the summons.
 
Last edited:
If log says "cant find function XXXXXX" you need to add "XXXXX" function to the animationscript declared on the Seg.txt entity. Spawnscreen in this case.
 
Bloodbane your demo works perfect, even in an old engine version. Btw, i couldnt make the bando script works in my mod. I think there is a script conflict.
The npc that use your script is using another script to spawn an entity .

animationscript data/scripts/enemy.c
animationscript data/scripts/script.c



I think the conflict is here:



anim pain

@script
if(frame==2){
void self = getlocalvar("self");

performattack(self, openborconstant("ANI_FOLLOW1"));
}
@end_script
offset 39 76
delay 4
frame data/npcs/seg/8.png
@cmd spawnscreen "mission" 2 90

delay 12
frame data/npcs/seg/8.png
frame data/npcs/seg/8.png
frame data/npcs/seg/8.png
frame data/npcs/seg/8.png
frame data/npcs/seg/8.png
frame data/npcs/seg/8.png
frame data/npcs/seg/8.png
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png
frame data/npcs/seg/8.png
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png

What do you think about this?
 
Im trying to use this:

name seg
health 100
type npc
nomove 1 1

defense all 0
animationscript data/scripts/enemy.c
load hunter


anim death
loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png

anim fall
loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png


anim idle
loop 1
offset 39 76
delay 12
bbox 29 39 21 37
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png

anim pain
@script
if(frame==2){
void self = getlocalvar("self");

performattack(self, openborconstant("ANI_FOLLOW1"));
}
@end_script
loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png

anim rise
loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png


anim follow1
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW2"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12

@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" 420 0 -10


frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png


anim follow2
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW3"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12

@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" 420 0 -10
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png

anim follow3
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW4"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12

@cmd spawn04 "hunter" 420 0 0
@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" -100 0 -10
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png

anim follow4
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW5"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12

@cmd spawn04 "hunter" 420 0 -10
@cmd spawn04 "hunter" 420 0 10
@cmd spawn04 "hunter" -100 0 0
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png

anim follow5
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW6"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12

@cmd spawn04 "hunter" 420 0 10
@cmd spawn04 "hunter" 420 0 -10
@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" -100 0 10
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
frame data/npcs/seg/5.png

anim follow6
offset 39 76
delay 12
frame data/npcs/seg/1.png
frame data/npcs/seg/2.png
frame data/npcs/seg/3.png
frame data/npcs/seg/4.png
@cmd suicide
frame data/npcs/seg/5.png



Im just tying to make bondo works in my mod, but after hit the char just follow1 is played, after kill all enemy its dont play follow2 and others follow animations.
 
Hmmm... do you have other enemies than hunters being active in the level?
Enemy counter is very strict so one invincible enemy could prevent script in Bondo's FOLLOWs to work properly.
 
I removed all enemys in the stage, but after follow 1 of the bandos script thr level ends. I dont know wgats wrong, i made a copy of Bando file and just changed the frame and doesnt work.

name seg
health 100
type npc
nomove 1 1

defense all 0
animationscript data/scripts/enemy.c
load hunter


anim death
loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png

anim fall


loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png


anim idle
loop 1
offset 39 76
delay 12
bbox 29 39 21 37
frame data/npcs/seg/1.png

anim pain
@script
if(frame==2){
void self = getlocalvar("self");

performattack(self, openborconstant("ANI_FOLLOW1"));
}
@end_script
loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png

anim rise
loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png



anim follow1
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW2"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12
frame data/npcs/seg/1.png
@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" 420 0 -10
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png


anim follow2
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW3"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12
frame data/npcs/seg/1.png
@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" 420 0 -10
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png

anim follow3
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW4"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12
frame data/npcs/seg/1.png
@cmd spawn04 "hunter" 420 0 0
@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" -100 0 -10
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png


anim follow4
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW5"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12
frame data/npcs/seg/1.png
@cmd spawn04 "hunter" 420 0 -10
@cmd spawn04 "hunter" 420 0 10
@cmd spawn04 "hunter" -100 0 0
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png

anim follow5
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW6"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12
frame data/npcs/seg/1.png
@cmd spawn04 "hunter" 420 0 10
@cmd spawn04 "hunter" 420 0 -10
@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" -100 0 10
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png

anim follow6
offset 39 76
delay 12
frame data/npcs/seg/1.png

@cmd suicide
frame data/npcs/seg/1.png
 
I removed all enemys in the stage, but after follow 1 of the bandos script thr level ends.

Ow, so that's the case :unsure:. I've tested Bondo in endless level in which level won't end despite absence of enemies 😁.

That means, you'd need to decide how the level (where Seg is) would work 😌.
1. Is it going to be endless level in which player exits the level by touching exit entity (or other mean)?
OR
2. is it going to be regular level in which player must defeat last enemy as usual?

For #1, you need to set type 1 in the level and spawn invisible and indestructible obstacle to prevent the level from ending on its own.
For #2, you need to control enemy spawns to ensure there are no other enemies before Seg spawns enemy.
 
Im geting creazy here....:ROFLMAO: didnt work yet, i tryed this:

level:

music data/music/cyber.bor

levelscript data/scripts/reset.c
background data/bgs/stg2/t2.png
panel data/bgs/stg2/t1.png
fglayer data/bgs/stg2/t3.png 0 -0.4 0 0 0 0 0 1 1 1 0 0 0 0 0 0

settime 0
notime 1
cameratype 1
direction both

type 1 0 0


scrollspeed 500





spawn empty
coords 160 200
at 0





@script
void main()
{
void P1 = getplayerproperty(0, "entity");
int x = getentityproperty(P1,"x");
int y = getentityproperty(P1,"y");

changeopenborvariant("xpos", x-30);
changeopenborvariant("ypos", 1980-y);
}
@end_script

order a a
spawn1 1980 30

spawn seg
coords 1726 425
at 0


spawn teste
coords 1661 345
at 0


spawn neon1
coords 1842 275
at 0


spawn neon2
coords 1460 360
at 0

spawn neon3
coords 1979 278
at 0

spawn neon4
coords 2273 391
at 0




spawn anim
coords 0 488
at 0


spawn car
coords 2600 455
at 0





SEG :

name seg
health 100
type npc
nomove 1 1

defense all 0
animationscript data/scripts/enemy.c
load hunter


anim death
loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png

anim fall


loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png


anim idle
loop 1
offset 39 76
delay 12
bbox 29 39 21 37
frame data/npcs/seg/1.png

anim pain
@script
if(frame==2){
void self = getlocalvar("self");

performattack(self, openborconstant("ANI_FOLLOW1"));
}
@end_script
loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png

anim rise
loop 0
offset 39 76
delay 12
frame data/npcs/seg/1.png



anim follow1
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW2"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12
frame data/npcs/seg/1.png
@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" 420 0 -10
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png


anim follow2
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW3"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12
frame data/npcs/seg/1.png
@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" 420 0 -10
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png

anim follow3
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW4"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12
frame data/npcs/seg/1.png
@cmd spawn04 "hunter" 420 0 0
@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" -100 0 -10
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png


anim follow4
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW5"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12
frame data/npcs/seg/1.png
@cmd spawn04 "hunter" 420 0 -10
@cmd spawn04 "hunter" 420 0 10
@cmd spawn04 "hunter" -100 0 0
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png

anim follow5
@script
if(frame==3){
int ECount = openborvariant("count_enemies");

if(ECount==0){
void self = getlocalvar("self");
performattack(self, openborconstant("ANI_FOLLOW6"));
}
}
@end_script
loop 1 2 4
offset 39 76
delay 12
frame data/npcs/seg/1.png
@cmd spawn04 "hunter" 420 0 10
@cmd spawn04 "hunter" 420 0 -10
@cmd spawn04 "hunter" -100 0 10
@cmd spawn04 "hunter" -100 0 10
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png
frame data/npcs/seg/1.png

anim follow6
offset 39 76
delay 12
frame data/npcs/seg/1.png

@cmd suicide
frame data/npcs/seg/1.png
 
Back
Top Bottom