Problems with RandEnemy, RandObstacle, RandItem

Steven1985

Active member
Hi, I am using these scripts to have randenemy, randobstacle and randitem but the game is not working.
I am using them in a test stage. On OpenBORLog there's no error.
C:
name        RandObstacle
type        none
lifespan    2
animationscript    data/scripts/spawn01_suicide.c
load         Barrel
load         Box
load        Drum
load         Phone
load         Tires



anim    idle
@script
    if(frame == 1){
      void self = getlocalvar("self");
      int r = rand()%2+2; //numero da 0 a 4

      //if(r > 0){
        if(r == 0){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW1"));
        } else if(r == 1){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW2"));
        } else if(r == 2){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW3"));
        } else if(r == 3){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW4"));
        } else if(r == 4){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW5"));
        }
      //}
    }
@end_script
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    frame    data/chars/misc/empty.gif
    delay    200
    frame    data/chars/misc/empty.gif

anim    follow1
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Barrel" 0 0 0
    frame    data/chars/misc/empty.gif

anim    follow2
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Box" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow3
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Drum" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow4
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Phone" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow5
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Tires" 0 0 0
    frame    data/chars/misc/empty.gif

C:
name        RandItem
type        none
lifespan    2
animationscript    data/scripts/spawn01_suicide.c
load         1up
load         Paffe
load        Hamburger
load         Barbecue
load         Croissant
load         Chocolate
load         Chips
load         Hotdog
load        Pizza
load         Steak
load        Donut
load        Pudding


anim    idle
@script
    if(frame == 1){
      void self = getlocalvar("self");
      int r = rand()%5+6; //genera numero da 1 a 12

      //if(r > 0){
        if(r == 1){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW1"));
        } else if(r == 2){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW2"));
        } else if(r == 3){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW3"));
        } else if(r == 4){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW4"));
        } else if(r == 5){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW5"));
        } else if(r == 6){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW6"));
        } else if(r == 7){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW7"));
        } else if(r == 8){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW8"));
        } else if(r == 9){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW9"));
        } else if(r == 10){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW10"));
        } else if(r == 11){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW11"));
        } else if(r == 12){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW12"));
        }
      //}
    }
@end_script
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    frame    data/chars/misc/empty.gif
    delay    200
    frame    data/chars/misc/empty.gif

anim    follow1
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "1up" 0 0 0
    frame    data/chars/misc/empty.gif

anim    follow2
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Hamburger" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow3
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Barbecue" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow4
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Croissant" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow5
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Chocolate" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow6
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Chips" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow7
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Hotdog" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow8
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Pizza" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow9
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Steak" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow10
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Donut" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow11
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Pudding" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow12
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Paffe" 0 0 0   
    frame    data/chars/misc/empty.gif

C:
name        RandEnemy
type        none
lifespan    2
animationscript    data/scripts/spawn01_suicide.c
load         Andore
load         Brett
load        Case
load         Daniel
load         Dingo
load         Dragon
load         Fish
load         Henry
load        J
load         Suke
load        Wrestler



anim    idle
@script
    if(frame == 1){
      void self = getlocalvar("self");
      int r = rand()%5+5; //genera numero da 0 a 10

      //if(r > 0){
        if(r == 0){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW1"));
        } else if(r == 1){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW2"));
        } else if(r == 2){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW3"));
        } else if(r == 3){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW4"));
        } else if(r == 4){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW5"));
        } else if(r == 5){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW6"));
        } else if(r == 6){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW7"));
        } else if(r == 7){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW8"));
        } else if(r == 8){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW9"));
        } else if(r == 9){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW10"));
        } else if(r == 10){
          changeentityproperty(self, "animation", openborconstant("ANI_FOLLOW11"));
        }
      //}
    }
@end_script
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    frame    data/chars/misc/empty.gif
    delay    200
    frame    data/chars/misc/empty.gif

anim    follow1
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Andore" 0 0 0
    frame    data/chars/misc/empty.gif

anim    follow2
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Brett" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow3
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Case" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow4
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Daniel" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow5
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Dingo" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow6
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Dragon" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow7
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Fish" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow8
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Henry" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow9
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "J" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow10
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Suke" 0 0 0
    frame    data/chars/misc/empty.gif
    
anim    follow11
    delay    1
    offset    8 14
    frame    data/chars/misc/empty.gif
    delay    200
    @cmd    spawn01 "Wrestler" 0 0 0
    frame    data/chars/misc/empty.gif

Code:
music        data/bgs/levels/stage_1/cadillacs.bor
panel        data/bgs/levels/stage_1/n01.gif
order           a

#z          176 241 160
# 2 ostacoli - 19 nemici
#lunghezza stage 670 pixel (ultimo at 350)


#Obstacles

#spawn   RandObstacle
#spawnscript data/scripts/RandZ.c
#item    RandItem
#coords  433 182
#at      0

#2pspawn RandObstacle
#spawnscript data/scripts/RandZ.c
#item    RandItem
#coords  433 227
#at      0

#Enemies

#-------1

group   3 3
at      4

#wait
#at      4

spawn   RandObstacle #bretest
spawnscript data/scripts/RandZ.c
item RandItem
#health  900000
coords  500 157
at      0

spawn   RandEnemy
spawnscript data/scripts/RandZ.c
health  99
coords  324 160
at      4

C:
void spawn01(void vName, float fX, float fY, float fZ)
{
    //spawn01 (Generic spawner)
    //Damon Vaughn Caskey
    //07/06/2007
    //
    //Spawns entity next to caller.
    //
    //vName: Model name of entity to be spawned in.
    //fX: X location adjustment.
    //fZ: Y location adjustment.
      //fY: Z location adjustment.

    void self = getlocalvar("self"); //Get calling entity.
    void vSpawn; //Spawn object.
    int  iDirection = getentityproperty(self, "direction");

    clearspawnentry(); //Clear current spawn entry.
      setspawnentry("name", vName); //Acquire spawn entity by name.

    if (iDirection == 0){ //Is entity facing left?                 
          fX = -fX; //Reverse X direction to match facing.
    }

      fX = fX + getentityproperty(self, "x"); //Get X location and add adjustment.
      fY = fY + getentityproperty(self, "a"); //Get Y location and add adjustment.
      fZ = fZ + getentityproperty(self, "z"); //Get Z location and add adjustment.
    
    vSpawn = spawn(); //Spawn in entity.

    changeentityproperty(vSpawn, "position", fX, fZ, fY); //Set spawn location.
    changeentityproperty(vSpawn, "direction", iDirection); //Set direction.
    
    return vSpawn; //Return spawn.
}


void suicide()
{ // Suicide!!
    void self = getlocalvar("self");

    killentity(self);
}

I attached the game to analyse it . It's a present for a friend of mine.


Thank you in advance. :)
 
I am using these scripts to have randenemy, randobstacle and randitem but the game is not working.

I believe those random entity spawners do work properly, that's why openborlog doesn't log any erroes. However they might not work they way you want them to be.

Also don't spawn obstacles or anything offscreen too far or else they'd be removed by offscreenkill.
Last but not least,
Code:
spawn   RandObstacle
spawnscript data/scripts/RandZ.c
item RandItem # isn't compatible with RandObstacle
coords  1268 188
at      0

Yep, any drop item declared on RandObstacle won't be carried to spawned obstacle.
 
I believe those random entity spawners do work properly, that's why openborlog doesn't log any erroes. However they might not work they way you want them to be.

Also don't spawn obstacles or anything offscreen too far or else they'd be removed by offscreenkill.
Last but not least,
Code:
spawn   RandObstacle
spawnscript data/scripts/RandZ.c
item RandItem # isn't compatible with RandObstacle
coords  1268 188
at      0

Yep, any drop item declared on RandObstacle won't be carried to spawned obstacle.
Ok, then if that's the case, I need to spawn a chosen obstacle to get a random item. Thank you. :)
 
Back
Top Bottom