Double Dragon Reloaded Alternate

Complete Double Dragon Reloaded alternate - Updated version! 5.1.1

No permission to download
Project is completed.
I Tried almost EVERY OPENBOR versions but still didint work! Can't you please give me advice of version that could work on PSP ???

It won't play on PSP, and it isn't meant to, full stop. The module requires more memory than the PSP can muster and was made on versions that came after we dropped PSP support.

DC
 
Best Double Dragon i ever played,Praise from the East of the world.
Could you please tell me how Willy shoots? thks
 
BUT it just caused the game to crash despite making changes consistently across the board that SHOULD work in theory?

Hard to say without required information.
First, how exactly did you copy that script from Sailor Moon demo?
Second, how did you apply the script to enemies in this game?
Third, what did the log say after the crash?
 
So Rash from Battletoad will be a playable character?
I'm curious to see what this ninja is worth: is it possible to display his sprites?
 
literally, at the end of that script (that is attached above) I added the code from the script used by the sailor moon demo

That's the mistake. You are supposed to copy the script file which is PinoDodge.c from Sailor Moon to your game, to data/scripts folder.
Then declare that script in the same way as Pino, which is like this:

ondoattackscript data/scripts/pinododge.c

in enemy's header text.
 
You can't have, say:
ondoattackscript ani0020ani
AND
ondoattackscript data/scripts/pinododge.c

You can't have more than one script FILE for an event hook, but that one file can have as may functions and logic chains in it as you feel like, AND it can pull material from other files using #import or #include. This is where you have to start learning enough about the scripts that you can integrate them.

The super short version is you copy (or more optimally, #import) functions you need into the existing file, and then execute them as needed.

All event hooks other than animationscript require a function called main() which they execute each time the event fires. You can then have main() run your functions and do stuff.

DC
 
Thanks.

I've read the header to find this line:
ondoattackscript data/scripts/ondoattack.c

You should find ondoattack.c instead and copy the scripts from pinododge.c there.
But allow me to do that for you, can you post ondoattack.c in your reply?
 
ah... that makes MORE sense.

Here ya go, the ondoattack.c code:

void main()
{
void self;
void other;
int which;
int hit_by_id;
int attack_id;
void vAniID = getentityproperty(self,"animationID");
int attacktype1 = getlocalvar("attacktype");
self = getlocalvar("self");
other = getlocalvar("other");
which = getlocalvar("which");

if(which && getentityproperty(other,"exists") && vAniID == openborconstant("ANI_FALL31")){
if(which == openborconstant("EXCHANGE_RECIPIANT") && vAniID == openborconstant("ANI_FALL31") && attacktype1 == openborconstant("ATK_NORMAL31")){
hit_by_id = getentityproperty(self, "hitbyid");
attack_id = getlocalvar("attackid");
if(hit_by_id != attack_id){
changeopenborvariant("lasthitc", 0);
}
}
}

}


AND here's the Pinododge.c code:

void main()
{// Dodges runattack
// Only performed if enemy is in IDLE or WALK
// When he/she dodges, he/she will perform FOLLOW1 animation
void self = getlocalvar("self"); //Get calling entity.
void Anim = getentityproperty(self, "animationID");
if(Anim == openborconstant("ANI_IDLE") || Anim == openborconstant("ANI_WALK")){
void target = findtarget(self);
void EAnim = getentityproperty(target, "animationID");
if(EAnim == openborconstant("ANI_RUNATTACK") || EAnim == openborconstant("ANI_JUMPATTACK") || EAnim == openborconstant("ANI_JUMPATTACK2") || EAnim == openborconstant("ANI_RUNJUMPATTACK")){
changeopenborvariant("lasthitc", 0);
changeentityproperty(self, "velocity", 0, 0);
performattack(self, openborconstant("ANI_FOLLOW1"));
}
}

}

@L K, please do not copy + paste code directly into posts. Use code tags. They are specifically for this.

DC
 
Thank you, here's the combined script:
C:
void main()
{
    void self = getlocalvar("self"); //Get calling entity.
    void other = getlocalvar("other");
    int which = getlocalvar("which");
    void Anim = getentityproperty(self,"animationID");
    int attacktype1 = getlocalvar("attacktype");
    int hit_by_id;
    int attack_id;

    if(Anim == openborconstant("ANI_IDLE") || Anim == openborconstant("ANI_WALK")){
      void target = findtarget(self);
      void EAnim = getentityproperty(target, "animationID");

      if(EAnim == openborconstant("ANI_RUNATTACK") || EAnim == openborconstant("ANI_JUMPATTACK") || EAnim == openborconstant("ANI_JUMPATTACK2") || EAnim == openborconstant("ANI_RUNJUMPATTACK")){
        changeopenborvariant("lasthitc", 0);
        changeentityproperty(self, "velocity", 0, 0);
        performattack(self, openborconstant("ANI_FOLLOW1"));
      }
    }
    if(which && getentityproperty(other,"exists") && Anim == openborconstant("ANI_FALL31")){
      if(which == openborconstant("EXCHANGE_RECIPIANT") && Anim == openborconstant("ANI_FALL31") && attacktype1 == openborconstant("ATK_NORMAL31")){
        hit_by_id = getentityproperty(self, "hitbyid");
        attack_id = getlocalvar("attackid");

        if(hit_by_id != attack_id){
          changeopenborvariant("lasthitc", 0);
        }
      }
    }
}
 
Want this behavior to mimic that of the OG Golden Axe where the enemies cleverly side step the diving sword/axe attacks from above.

Hmmm... I've just recalled that the script use findtarget function and that function uses range setting to check opponent distance.
So try setting range in both enemy's IDLE and WALK and see if enemy would react better.
 
Nonsensical Spam
New Update from 07.12.2019!
-News in this new Build 4.0.1:
1. The game is updated for the latest OpenBOR.v3.0.Build.6412. That means it's now fully compatible for the Raspberry Pi, Nintendo Switch and Android OpenBOR ports.
2. The game now comes bundled with the latest OpenBOR.v3.0.Build.6412.
3. Added a new and way better enemies AI movement, so the enemies now move and act way smarter.
4. Also made some other bug fixes here and there.

The game is now fully compatible with all latest OpenBOR builds but is not anymore compatible with the much older OpenBOR builds like before! This is because the game is now using some new OpenBOR features which only exist for the latest OpenBOR builds.

Hope you will enjoy it :D
hi when u play with tree , how are u able to make the fart flowers and to throw mushrooms plz thx !!!!!!!!!!
 
Back
Top Bottom