Hide or remove Game Mode (Difficulty Set?)

Crimsondeath

Active member
Hello to everyone :D ,
I want to use a Difficulty set as an animated intro (I don't want to use gif animations anymore xd).

So I discovered the skiptoset option to skip the menu title and going to the stage where I'm going to put the animated intro:

But at the end of the video you can see that my "Animated Intro" shows at the Difficulty/Game mode selection in the menu, so It's posible to hide it or remove it from there?

And is there a method to going back to title screen without using the pause menu options? (like pressing "Enter to skip" the animated intro?)
I don't want the game mark as "completed" once the intro is finished.
 
Last edited:
And is there a method to going back to title screen without using the pause menu options?
About this, yes. There is a native function for that: gotomainmenu
1740399855463.png

on my Avengers game, I have a branch arrow which leads uses a followanimation once it hits you, and on that follow animation I use this script
C-like:
@script
if(frame>0){
gotomainmenu(3);
}
    @end_script
 
@O Ilusionista: Thanks again pal.

At least Do you know if it's a way to include sound effects, or simple scripts events to cutscenes?

Code:
// A script button to skips the whole cutscene? "0 0 1 0" skips just the current animation

music        data/music/scenea.ogg 1
animation    data/scenes/scene4a/scene4a-a.gif 0 0 1 0
sound  data/sounds/voicecharacter1.wav // I tried this and didn't hear anything xd, in Silver Night's Crusaders I have to mix voice SFX with music xddd.
animation    data/scenes/scene4a/scene4a-b.gif 0 0 1 0
sound  data/sounds/voicecharacter2.wav
animation    data/scenes/scene4a/scene4a-c.gif 0 0 1 0
animation    data/scenes/scene4a/scene4a-d.gif 0 0 1 0

Is the Openbor Manual Cutscene Section is all the documentation for Cutscenes? Or there are more I'm missing about them.

Besides, do you know what "attack type" is the "boss death kill screen"(?) When a boss entity is killed all other enemies in the stage are killed, but there is one who has an scripted evasion move which can dodge that x'dddd (I want he dies too xd).

My version: OpenBoR v3.0 Build , Compile Date: May 12 2023
 
Last edited:
Besides, do you know what "attack type" is the "boss death kill screen"(?) When a boss entity is killed all other enemies in the stage are killed, but there is one who has an scripted evasion move which can dodge that x'dddd (I want he dies too xd).
Its the "ATK_BOSS_DEATH"

About the sound effects, you can use them in .ogg format. But they will cancel the music.

In some cases, its easier to make a fake level and use it as a cutscene. You will even bypass some random bug related with skipselect and cutscenes.
 
its easier to make a fake level and use it as a cutscene. You will even bypass some random bug related with skipselect and cutscenes.

Yeah that's what I wanted to do in my original posting:

Hello to everyone :D ,
I want to use a Difficulty set as an animated intro (I don't want to use gif animations anymore xd).

So I discovered the skiptoset option to skip the menu title and going to the stage where I'm going to put the animated intro:

But at the end of the video you can see that my "Animated Intro" shows at the Difficulty/Game mode selection in the menu, so It's posible to hide it or remove it from there?

And is there a method to going back to title screen without using the pause menu options? (like pressing "Enter to skip" the animated intro?)
I don't want the game mark as "completed" once the intro is finished.

But I can't do that "fake level" for the game intro cutscene.
 
Ok I found an alternative solution to get sounds effects in cutscenes: Spawning an "invisible" entity in the cutscene with the update.c script xdd.

In the update.c:
C:
void oncreate() {
    setglobalvar("scene1played", 0);
}

void main(){
    if(openborvariant("in_titlescreen") || openborvariant("in_menuscreen")){
        setglobalvar("scene1played", 0);
    }
    if(openborvariant("current_scene") == "data/scenes/scene1.txt" && getglobalvar("scene1played") == 0){
        setspawnentry("name", "se_park"); // Spawn an entity that plays the sound effect I want xdd
        spawn();
        setglobalvar("scene1played", 1);
    }
}

All that I have to do now is control the entity animation with "delay" so he plays the sound effect I want in the right time.
At least now I can play the characters voices in the sound channel and not mix it in the music channel (some Players turned off the music in Silver Night's Crusaders and the dub get turn off too xdd).

But I still have the problem with that Animated Intro scene (intro.txt). I'm open to any solution.

Thanks.
 
Last edited:
Why not just make a webm video? You can play that with intro.text.

DC
It's because of the video quality.

I recorded a "fake stage" test scene and play it in the intro.txt and didn't look so well. I think it's because I don't have good video conversor (I have Wondershare UniConverter 15) or maybe I need an application which can record videos directly in webm format (I use OBS to record my gameplays xd).

The method I posted works great for Neon Lightning Force, because their cutscenes are just plain images, but for Silver Night's Crusaders which cutscenes are text boxes with characters moving throught the screen I'm going to need a more creative solution for their intro, well... If not posible just play it as it, at least the dub ins't going to be silence if people turn off the music volume, thanks for the reply (y).
 
Last edited:
@O Ilusionista: Thanks again pal.

At least Do you know if it's a way to include sound effects, or simple scripts events to cutscenes?

Code:
// A script button to skips the whole cutscene? "0 0 1 0" skips just the current animation

music        data/music/scenea.ogg 1
animation    data/scenes/scene4a/scene4a-a.gif 0 0 1 0
sound  data/sounds/voicecharacter1.wav // I tried this and didn't hear anything xd, in Silver Night's Crusaders I have to mix voice SFX with music xddd.
animation    data/scenes/scene4a/scene4a-b.gif 0 0 1 0
sound  data/sounds/voicecharacter2.wav
animation    data/scenes/scene4a/scene4a-c.gif 0 0 1 0
animation    data/scenes/scene4a/scene4a-d.gif 0 0 1 0

Is the Openbor Manual Cutscene Section is all the documentation for Cutscenes? Or there are more I'm missing about them.

Besides, do you know what "attack type" is the "boss death kill screen"(?) When a boss entity is killed all other enemies in the stage are killed, but there is one who has an scripted evasion move which can dodge that x'dddd (I want he dies too xd).

My version: OpenBoR v3.0 Build , Compile Date: May 12 2023

@Crimsondeath I can get WAV files to play using the "sound data/.../soundfile.wav" command you listed.

I'm using: OpenBoR v4.0 Build 7555 (commit hash: b1676f9), Compile Date: Jan 9 2024

What I did was create a Entity where Type = Text.

For example:


C-like:
name     City_Cutscene
type     text
setlayer 900
offscreenkill    50


anim idle
    loop      0
    offset    160 120
    delay     250
    frame     data/scenes/cutscenes/city_00.png
    sound   data/SOUNDS/Big.wav 
    frame     data/scenes/cutscenes/city_00.png
    sound   data/SOUNDS/Hope.wav 
    frame     data/scenes/cutscenes/city_00.png
    sound   data/SOUNDS/OnlyThing.wav 
    frame     data/scenes/cutscenes/city_00.png

I then create a parent entity to spawn the "City_Cutscene" :


C:
//use this to spawn the cutscene
name     Cutscene_Spawner
type     none
setlayer 900
offscreenkill    50

//load your cutscene Text entity
load City_Cutscene


anim idle
     loop      0
     offset    160 120
     delay     1

    // transparent frame
    frame     data/scenes/cutscenes/clear.png
  
@script
    if(frame == 1 ){
  
                  
                    void self = getlocalvar("self"); //Get calling entity.
                    void vSpawn; //Spawn object.
                    int  iDirection = getentityproperty(self, "direction");
                    int fX = 0;
                    int fY = 0;
                    int fZ = 0;

                    clearspawnentry(); //Clear current spawn entry.
                    setspawnentry("name", "City_Cutscene"); //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;

                  
              
              
        }
    }
  
@end_script

delay 0
frame     data/scenes/cutscenes/clear.png


You would then spawn the parent normally in your <level_name>.txt file.

Hope that helps - not sure how you coded your cutscene.
 
Back
Top Bottom