OpenBOR v3.0 Build 6412

Added my first function to openbor. We already had loadmodel to load a cached model into memory but now I have added unload_model to remove a model from memory.

example usage: unload_model("model_name");

Be careful using these as you could end up using more memory if you are loading models more then once.  From my tests this can not unload the first player model from memory.

Download: https://github.com/DCurrent/openbor/releases
 

kimono

Well-known member
It's always cool to have an enemy reaction when the player is dead :).
nsw25: Yes, there's always cool tricks to set when we know how Openbor engine works.
Damon Caskey: Thank you. I hope this is not too much scriptwork to integer this. I'll choose the nsw25's solution for now.
 

dantedevil

Well-known member
Hello my friends!

I've been testing this build and it worked fine for me in everything, with the exception of a bug that remains for a long time and I see that it has not yet been solved.

👉 Enemy blocks while fallen bug
The enemy appears standing blocking the attack, without going through the anim rise.
 
Last edited:

machok

Well-known member
how do we check openbor version we are using?
I looked in the logs only find this:
Code:
OpenBoR v3.0 Build , Compile Date: Jul 20 2018
 

msmalik681

OpenBOR Developer
Staff member
A lot of older builds left the release number out i tried to fix that by promoting the person compiling open to manually type the build number if not auto detected. Hopefully it wont be a issue for future releases.

Your only clue will be the compile date showing on the pak selection menu.

Your build is 6330 as that was released Jul 20 2018.
 
Last edited:

machok

Well-known member
Update: solved thanks to Kratus

Not sure whats going on, when continue engine give 10 second time to pick continue characters?
I have time attack stage and need to use no reset feature
but if I insert noreset to 1 or 2 when respwan time is only 10 seconds
Code:
noreset {int}


[LIST]
[*]Determines when clock resets aside from clearing wait, clearing level and time out.
[LIST]
[*]0 = (default) Clock resets when another player joins mid-stage and when player respawns.
[*]1 = Clock only resets on time out.
[*]2 = Clock resets when player respawns.
[/LIST]
[/LIST]

1. before continue, time still 33
sf89 - 0002.png
2. continue
sf89 - 0003.png
3. after choose continue character
sf89 - 0005.png
4. respawn and time count only 2
sf89 - 0007.png

What I need is time count 33
Sorry if I put question here, I don't think I use any code so is this the engine behavior or I use the wrong feature?
*right now I am using v6330 but I think it's just the same result with v6391
 
Last edited:

Kratus

OpenBOR Developer
Staff member
@machok
I think that the engine enters in a 10 seconds counter when there's no players on the screen to simulate some kind of "continue screen". This way, if there no players active, the game doesn't need to wait 99 seconds to finish the current level and can bring the game over screen earlier.

You can easily control the game timer by changing it inside the "timetick.c" event, you will need to create the file "data/scripts/timetick.c" and put your code inside it
This event runs at every time the game timer changes, it's very useful to create a "continue screen". Below is an example of how you can change the game timer.
C:
if(openborvariant("game_time") < 10){ //CONTINUE COUNTER IS LESS THAN 10 SECONDS??
    changeopenborvariant("game_time", 10); //CHANGE CONTINUE TIMER TO 10 SECONDS
}

Here's my continue screen code to show an example:
C:
void main()
{
    float limit1    = 4000; //TIME LIMIT TO CHECK IF THERE'S A CONTDOWN RUNNING
    float limit2    = 39800; //USED ONLY WHEN THE UNLIMITED GAME TIME IS ACTIVATED
    float add        = 3960; //TIME TO BE ADDED IF ALL PLAYERS ARE DEAD BUT HAS CREDITS TO USE
   
    //CONTINUE SCREEN IS BEING SHOWN??
    if(getglobalvar("activeText") == "Continue"){
        if(openborvariant("count_players") > 0){ //PLAYERS ARE IN THE SCREEN??
            setglobalvar("activeText", 0); //DISABLE CONTINUE COUNTER
        }
    }
   
    //CONTINUE SCREEN IS NOT BEING SHOWN??
    if(getglobalvar("activeText") != "Continue"){
        if(    !getplayerproperty(0, "joining") &&
            !getplayerproperty(1, "joining") &&
            !getplayerproperty(2, "joining") &&
            !getplayerproperty(3, "joining") ){

            if(openborvariant("count_players") <= 0){ //NO PLAYERS IN THE SCREEN??
                if(getplayerproperty(0, "credits") > 0){ //ALREADY HAVE CREDITS TO PLAY??
                    if(openborvariant("game_time") < limit1){ //CONTINUE COUNTER IS LESS THAN 10 SECONDS??
                        changeopenborvariant("game_time", add); //CHANGE CONTINUE TIMER TO 10 SECONDS
                        setglobalvar("activeText", "Continue"); //ENABLE CONTINUE COUNTER
                    }
                }
            }
        }

        //GAME TIMER IS DISABLED?? MAINTAIN THE TIMER ALWAYS AT 99 SECONDS
        if(getglobalvar("gameTimer") == "off"){
            if(openborvariant("current_set") != 1){ //AVOID SURVIVAL MODE
                if(openborvariant("count_players") > 0){ //PLAYERS ARE IN THE SCREEN??
                    if(openborvariant("game_time") < limit2){ //CONTINUE COUNTER IS LESS THAN 99 SECONDS??
                        changeopenborvariant("game_time", limit2); //CHANGE CONTINUE TIMER TO 99 SECONDS AGAIN
                    }
                }
            }
        }
    }
}
 
Last edited:

SilentMRG

Member
Friends, where can I download v3.0 Build 6412? I looked in the GitHub repository and didn't find it. I need it to run two updated Golden Axe modules that require this build.

Thanks in advance!
 

Die_In_Fire

Active member
I've got a simple suggestion : anim victory could be nice if it works too for enemies that defeat the player :).
Never check this post before.
It could be like this, on the enemy header:
Victory { } where {} could be 0, 1 or 2.
0 default, nothing happens.
1: plays anim victory when THIS entity give the fatal blow to player.
2: plays anim victory when player is defeated regardless of who deliver the fatal blow
 
Top Bottom