OpenBOR

OpenBOR 4.0 7556

No permission to download
I`m getting this after run .bat:
View attachment 10070

I was afraid of that. We recently had one of the older (and FAR more knowledgeable than myself) devs show up (@SX), and he tried to modernize the compiling. problem is, none of us could ever get it to work even with his help. Supposedly the original batch build would still run as a fallback, but I guess not. I took a bit of time off after the 4.0 release to work on my own projects and haven't messed with it any. I'll have to go in and revert those changes (I'll put them into another branch so they won't be gone), and see if I can get the batch build going again. It won't be this week though, I'm kind of buried in some post grad work ATM.

DC
 
Tried to build
I was afraid of that. We recently had one of the older (and FAR more knowledgeable than myself) devs show up (@SX), and he tried to modernize the compiling. problem is, none of us could ever get it to work even with his help. Supposedly the original batch build would still run as a fallback, but I guess not. I took a bit of time off after the 4.0 release to work on my own projects and haven't messed with it any. I'll have to go in and revert those changes (I'll put them into another branch so they won't be gone), and see if I can get the batch build going again. It won't be this week though, I'm kind of buried in some post grad work ATM.

DC
I've tried to build with linux bash build.sh, that's the output:

1737555803253.png
1737555984845.png
 
followed SX's compile instructions and managed to build the windows x86 and x64, linux x86, x64, arm64. then i get a error.

Code:
CMake Error: The current CMakeCache.txt directory /workspace/CMakeCache.txt is different than the directory /home/malik/Downloads/openbor-master where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt

This needs to be trouble shooted with @SX .
 
followed SX's compile instructions and managed to build the windows x86 and x64, linux x86, x64, arm64. then i get a error.

Code:
CMake Error: The current CMakeCache.txt directory /workspace/CMakeCache.txt is different than the directory /home/malik/Downloads/openbor-master where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt

This needs to be trouble shooted with @SX .

Probably need to send him a direct mail. My host is still getting blocked by gmail, and @SX is using a gmail address - meaning he's not probably getting tag alerts. I've had that ticket open a while - need to pound on them a little bit. I'm paying through the nose for high end hosting service, and that's unacceptable.

DC
 
I am pretty sure when SX added the new make option for compiling he did not take anything away from the current windows building system.

@DCurrent if you check compiling.md it mentions you can setup using VSCODE.
 
Last edited:
I am pretty sure when SX added the new make option for compiling he did not take anything away from the current windows building system.

@DCurrent if you check compiling.md it mentions you can setup using VSCODE.

Yes, but it's a convoluted set up through Docker that even after @SX walked me through in a live meeting I could never replicate on my own. Which, for a while I just figured was me being a moron - thing is though, nobody else can make it work either.

DC
 
@Kratus had a prepared release IIRC
@DCurrent Yes, I prepared a zip file which contains the executable for the three main 7612 builds (Windows/Linux/Android).
However, I'm not too familiar with the "new builds" launch process in GitHub at the "tags" section.

1738015392381.png

In addition, above the build 7612 I saw many new updates not only related to the new compilation process, at least from my part I couldn't test and don't know if everything is working fine.
 
I am trying out the new functions in 4.0, why this is not working?
It is giving me an error message.
Code:
int FrozenStatus = get_entity_property(target, openborconstant(ENTITY_PROPERTY_FREEZE_STATE));
Thank you
 
I am trying out the new functions in 4.0, why this is not working?
It is giving me an error message.
Code:
int FrozenStatus = get_entity_property(target, openborconstant(ENTITY_PROPERTY_FREEZE_STATE));
Thank you
I didn't test but if I'm not wrong there's some new v4 properties under development. Optionally you can use v3 functions too.

Code:
int frozen = getentityproperty(target, "frozen");
 
I know these weren't possible in any version prior to V 4.0
Is it possible to check if the enemy is the boss type in V 4.xx?
I mean we can declare the enemy as the boss in the level.txt,
I just don't see why we can not have a way to check this?

Furthermore, is it possible to get the current playing music name or resume the music after playing webm videos without scripts?
Right now I am doing all kind of scripts and tricks just to get this playing music name.
We all know that after playing webm videos, the music stops....

I know V 4.xx is still at the early stage, so I hope someday someone finds a way to code these,
thank you everyone for your hard work and god bless you all!
 
I know these weren't possible in any version prior to V 4.0

Uhm... No, you don't know. And I would appreciate you not making assertions until you have the correct information because that can confuse other members. See below:

Is it possible to check if the enemy is the boss type in V 4.xx?
I mean we can declare the enemy as the boss in the level.txt,
I just don't see why we can not have a way to check this?

Not only have you always been able to tell if an entity was a boss or not, you can also change the boss property mid game.

C-like:
// V3 method (still works in 4)
int boss = getentityproperty(<entity>, "boss");

changeentityproperty(<entity>, "boss", <int>);

// V4 method (faster)
int boss = get_entity_property(<entity>, openborconstant("ENTITY_PROPERTY_BOSS"));

set_entity_property(<entity>, openborconstant("ENTITY_PROPERTY_BOSS"), <int>);

There's also a level count that tells you how many bosses are active at the moment.

Furthermore, is it possible to get the current playing music name or resume the music after playing webm videos without scripts?

Sorry, but that doesn't make any logical sense. How would you "get" a value of any kind without script? So no.

DC
 
Uhm... No, you don't know. And I would appreciate you not making assertions until you have the correct information because that can confuse other members. See below:
Sorry, my apologies for my newbie dummy - I will be very careful about this next time.

Sorry, but that doesn't make any logical sense. How would you "get" a value of any kind without script? So no.
Sorry please ignore the part "get"... what I meant was the native functions/commands something like resume_music without script.
For example, resume_stage_music or resume_boss_music. etc..

Even with the script, is there a way to get the stage music name or boss music name?

Thank you for your help.
 
is there a way to get the stage music
In short, no. However you can play music through the playmusic() function and then you can save the current music name or number into a variable.

A tip: Try to focus more on reaching the final result instead of focusing too much on the used method, this can improve your development. Sometimes there's no direct solution with native functions, but you can always try alternatives using scripts.
 
In short, no. However you can play music through the playmusic() function and then you can save the current music name or number into a variable.

A tip: Try to focus more on reaching the final result instead of focusing too much on the used method, this can improve your development. Sometimes there's no direct solution with native functions, but you can always try alternatives using scripts.
I really appreciate for your help and the tip.
 
Last edited:
There is a little issue/typo in ondoattackscript : as you can see below sometimes the local var referring to the "attack ID" is accessed through "attackid", and sometimes "attack_id".

In most tutorials I saw this var is accessed through "attackid", but currently you actually have to use "attack_id", otherwise you'll get a null value. It's only cleaned as "attackid".

Code:
void execute_ondoattack_script(entity *ent, entity *other, s_attack *attack, e_exchange which, int attack_id)
{
    ScriptVariant tempvar;
    Script *cs = ent->scripts->ondoattack_script;
    if(Script_IsInitialized(cs))
    {
        ScriptVariant_Init(&tempvar);
        ScriptVariant_ChangeType(&tempvar, VT_PTR);
        tempvar.ptrVal = (VOID *)ent;
        Script_Set_Local_Variant(cs, "self",        &tempvar);

        tempvar.ptrVal = (VOID *)other;
        Script_Set_Local_Variant(cs, "other",    &tempvar);

        ScriptVariant_ChangeType(&tempvar, VT_INTEGER);

        tempvar.lVal = (LONG)attack->attack_force;
        Script_Set_Local_Variant(cs, "damage",      &tempvar);

        tempvar.lVal = (LONG)attack->attack_drop;
        Script_Set_Local_Variant(cs, "drop",        &tempvar);

        tempvar.lVal = (LONG)attack->attack_type;
        Script_Set_Local_Variant(cs, "attacktype",  &tempvar);

        tempvar.lVal = (LONG)attack->no_block;
        Script_Set_Local_Variant(cs, "noblock",     &tempvar);

        tempvar.lVal = (LONG)attack->guardcost;
        Script_Set_Local_Variant(cs, "guardcost",   &tempvar);

        tempvar.lVal = (LONG)attack->jugglecost;
        Script_Set_Local_Variant(cs, "jugglecost",  &tempvar);

        tempvar.lVal = (LONG)attack->pause_add;
        Script_Set_Local_Variant(cs, "pauseadd",    &tempvar);

        tempvar.lVal = (LONG)attack->meta_tag;
        Script_Set_Local_Variant(cs, "tag",    &tempvar);

        tempvar.lVal = (LONG)which;
        Script_Set_Local_Variant(cs, "which",    &tempvar);

        tempvar.lVal = (LONG)attack_id;
        Script_Set_Local_Variant(cs, "attack_id",    &tempvar);

        Script_Execute(cs);
        //clear to save variant space
        ScriptVariant_Clear(&tempvar);
        Script_Set_Local_Variant(cs, "self",        &tempvar);
        Script_Set_Local_Variant(cs, "other",        &tempvar);
        Script_Set_Local_Variant(cs, "damage",      &tempvar);
        Script_Set_Local_Variant(cs, "drop",        &tempvar);
        Script_Set_Local_Variant(cs, "attacktype",  &tempvar);
        Script_Set_Local_Variant(cs, "noblock",     &tempvar);
        Script_Set_Local_Variant(cs, "guardcost",   &tempvar);
        Script_Set_Local_Variant(cs, "jugglecost",  &tempvar);
        Script_Set_Local_Variant(cs, "pauseadd",    &tempvar);
        Script_Set_Local_Variant(cs, "which",        &tempvar);
        Script_Set_Local_Variant(cs, "attackid",    &tempvar);
        Script_Set_Local_Variant(cs, "tag",            &tempvar);
    }
}
 
Back
Top Bottom