To set an enemy a precise trattoria

Steven1985

Active member
Hi guys, is it possible to set an enemy a precise trattoria? It doesn't follow us but has a certain path, like a ship always goes back and forth. Thanks in advance.
 
That's what some enemies in my metroidvanias do, they just walk/move back and forth. Watch this video and you can see some enemies do that.

To create these kind of enemies, the first step is to force them to play certain animation then define their movement AI. the easiest way is to define their movement directly in the animation.
The enemies you see in the video have script to check their position relative to screen or wall or platform to decide when to turn around and walk in opposite direction.

So what kind of enemy are you creating here?
 
Hmmm.... AFAIK enemies in Space Invaders have more complex AI, that is they won't go near screen edge if their friend already near that edge.
But I'm going to assume you want simpler one. Here's an example:
Code:
anim    idle
@script
    void self = getlocalvar("self");
    int x = getentityproperty(self, "x");
    int Width = openborvariant("levelwidth");

    if(x > Width - 50){
      changeentityproperty(self, "velocity", -1);
      changeentityproperty(self, "direction", 0);
    } else if(x < 50){
      changeentityproperty(self, "velocity", 1);
      changeentityproperty(self, "direction", 1);
    }
@end_script
...

Try this one on static enemy and see what happens :D
 
Resolved. Daniele Spadoni succeeded without a script for his game Beats-VS-Aliens (download on *link removed danno* To make the rock flow back and forth on level 2 (see rock1-RL.txt), he put this:
Code:
name    rock1-RL
health  1000000
type    obstacle
shadow    0
offscreenkill 9999999


subject_to_hole 0
subject_to_obstacle 0
subject_to_platform 0


anim    idle
    loop    1
    delay    1
    offset    40 42

  
\\seta 20
platform 43 53 -29 -29 23 23 12 43
  
move 1
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png

move 0
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png

move -1
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
move 0
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png
frame    data/chars/ROCKS/01.png

As you can see, he only put anim idle, added the platform item with values to the animation, then put move 1 to make the rock move forward one pixel every frame (there are many frames), move 0 to stop it for a moment with the corresponding frames, move -1 to make the rock slide backwards but having the same function as move 1 and move 0 again.
The more frames you put, the further the object moves away and at move 0 the more frames you put the more it stands still and then starts again in the next animation. If you do not enter move 0 OpenBOR calculates the last animation created with the move, skips all, does only one and does not calculate the others. Move 0 is like a key to block everything and make it read the next command.

Note well: Daniele Spadoni never uses scripts in his games because the versions they made for consoles, for Amiga are not the latest versions and therefore the games do not work with scripts, so he makes sure that the games work everywhere.
 
Last edited by a moderator:
It's funny that Daniele Spadoni is using the forum via proxy through you @Steven1985 considering their feelings towards us here, what's not acceptable however is you posting a banned members work, link removed and friendly warning not to do that again.
 
This is NOT a solution at all. It's a bad hack we specifically advise creators not to do. It will break the very second you put it on a another platform or you interact with the entity in game.

I don't like criticizing a person directly, but Daniel Spadoni doesn't use script because he doesn't know what he's doing, full stop. You'd be well advised not to use his work as an example, it will only cause you more problems long term.

Also as @danno mentioned, Daniel is banned from this forum for poor behavior. You are not permitted to act as his mouthpiece.

DC
 
It's funny that Daniele Spadoni is using the forum via proxy through you @Steven1985 considering their feelings towards us here, what's not acceptable however is you posting a banned members work, link removed and friendly warning not to do that again.
This is NOT a solution at all. It's a bad hack we specifically advise creators not to do. It will break the very second you put it on a another platform or you interact with the entity in game.

I don't like criticizing a person directly, but Daniel Spadoni doesn't use script because he doesn't know what he's doing, full stop. You'd be well advised not to use his work as an example, it will only cause you more problems long term.

Also as @danno mentioned, Daniel is banned from this forum for poor behavior. You are not permitted to act as his mouthpiece.

DC
Ok, I will not do it again. I just want to say that I did not do it in bad faith. I did only for friendship. What happened between Daniele and the forum does not concern me. He told me to do things and I did it without wanting to go against anyone. :)
 
Ok, I will not do it again. I just want to say that I did not do it in bad faith. I did only for friendship. What happened between Daniele and the forum does not concern me. He told me to do things and I did it without wanting to go against anyone. :)

No problem, that's why it's just a friendly warning. As for the solution, @Bloodbane gave you the best advice. I suggest you use his version.

DC
 
Back
Top Bottom