OpenBOR

OpenBOR 4.0 4.0 Build 7735

No permission to download
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);
    }
}

Thanks for the catch @Piccolo. It should be "attack_id" across the board.

DC
 
Another small issue, in openborscript.c :

Code:
 case _ep_hitbyid:
    {
        ScriptVariant_ChangeType(*pretvar, VT_INTEGER);
        (*pretvar)->lVal = (uintptr_t)ent->attack_id_incoming;
        break;
    }

This is relating to the getter of "hitbyid". It seems "ent->attack_id_incoming" was previously an integer, but now it's an array, so the code should be something like this I guess :

Code:
 case _ep_hitbyid:
    {
        ScriptVariant_ChangeType(*pretvar, VT_INTEGER);
        (*pretvar)->lVal = (uintptr_t)ent->attack_id_incoming[0];
        break;
    }

The setter of this property seems to already have been updated to take this change into account, but not the getter.
 
Alright, starting to (kind of) get the hang of this. I posted a new release that includes the Android, Linux and Wii builds (WTF do we still have a Wii port?, Whatever...).

Anyway, there are some remaining things well beyond my ability to solve at this point. I'm hoping @SX can offer some insight.

The first is build size. I don't know about ports because I never paid much attention, but Windows executable files are bloated WAY beyond reason. The old batch compile produced 3.5MB exes, now we're pushing 9MB. I tried messing with some debug strip flags, but that only got it down to ~7MB. The other, which I'll make a bug report on, is the 64bit exe will not load .png files. Probably a library issue, but again, for the time being I am in over my head with the Docker environment move.

DC
 
the android apk will need to be compiled by @Kratus as i cant compile on Linux but i am trying to update so it works on Linux and i can add it to future releases myself.
 
the android apk will need to be compiled by @Kratus as i cant compile on Linux but i am trying to update so it works on Linux and i can add it to future releases myself.
So that means there's no current APK, or there is one in the works as of now? If that's the case, can you at least give me a recent APK of the current Android release of OPENBOR that works on Android 14?
 
All, I just discovered a very severe bug in the 4.0 script support. New functions are returning erroneous values for decimal/floating type. I haven't identified the cause yet. Maybe @SX, or @Kratus could spot something in it. The relative code is in common_property.c:

C:
HRESULT property_access_get_member(const s_property_access_map* property_map, ScriptVariant* pretvar)
{
    //printf("\n property_access_get_member() \n");
    char fixed_string[MAX_NAME_LEN] = { 0 };
    if (property_map == NULL || property_map->field == NULL) {
        printf("\n\n Error: Null pointer passed to a property access get function. \n");
        return E_FAIL;
    }
    //printf("\n property_map->type: %d", property_map->type);
    ScriptVariant_ChangeType(pretvar, property_map->type);

    switch (property_map->type)
    {
    case VT_INTEGER:
        //printf("\n\t VT_INTEGER");
        pretvar->lVal = *(LONG*)property_map->field;
        break;
    case VT_PTR:
        //printf("\n\t VT_PTR");
        if (property_map->config_flags & PROPERTY_ACCESS_CONFIG_STATIC_POINTER)
        {
            pretvar->ptrVal = (void*)property_map->field;
        }
        else
        {
            pretvar->ptrVal = *(void**)property_map->field;
        }
        break;
    case VT_DECIMAL:
        //printf("\n\t VT_DECIMAL");
        pretvar->dblVal = *(DOUBLE*)property_map->field;
        break;
    case VT_STR:
        //printf("\n\t VT_STR");
        if (property_map->config_flags & PROPERTY_ACCESS_CONFIG_STATIC_LENGTH) {   
            memcpy(fixed_string, *(char(*)[MAX_NAME_LEN])property_map->field, MAX_NAME_LEN);
            pretvar->strVal = StrCache_Pop(MAX_NAME_LEN);
            memcpy(StrCache_Get(pretvar->strVal), fixed_string, MAX_NAME_LEN);
        }
        else {
            pretvar->strVal = StrCache_CreateNewFrom(*(char**)property_map->field);
        }
        break;
    case VT_EMPTY:
        //printf("\n\t VT_EMPTY");
        break;
    }
    //printf("\n property_access_get_member OK.");
    return S_OK;
}

You can test by using the dump functionality:

C:
void acting_entity = getlocalvar("self");

get_entity_property(acting_entity, openborconstant("PROPERTY_ACCESS_DUMP"));

Note the obviously bad data on position here. The other decimals are wrong too, but position is probably easiest to test and verify:

Rich (BB code):
Property List: 0F3BF298
     | Index | ID                                      | Type       | Access       | Value
     | 0     | ENTITY_PROPERTY_AI_DISABLE              | VT_INTEGER | Read, Write  | 0
     | 1     | ENTITY_PROPERTY_AI_TARGET_ENTITY        |     VT_PTR | Read, Write  | 00000000
     | 2     | ENTITY_PROPERTY_ALTERNATE_IDLE          | VT_INTEGER | Read, Write  | 0
     | 3     | ENTITY_PROPERTY_ALTERNATE_WALK          | VT_INTEGER | Read, Write  | 0
     | 4     | ENTITY_PROPERTY_ANIMATION               |     VT_PTR | Read         | 0F3A2D30
     | 5     | ENTITY_PROPERTY_ANIMATION_FRAME         | VT_INTEGER | Read, Write  | 0
     | 6     | ENTITY_PROPERTY_ANIMATION_ID            | VT_INTEGER | Read, Write  | 17
     | 7     | ENTITY_PROPERTY_ANIMATION_ID_PREVIOUS   | VT_INTEGER | Read, Write  | 3
     | 8     | ENTITY_PROPERTY_ANIMATION_STATE         | VT_INTEGER | Read, Write  | 1
     | 9     | ENTITY_PROPERTY_ANIMATION_TIME          | VT_INTEGER | Read, Write  | 361
     | 10    | ENTITY_PROPERTY_ARROW_STATE             | VT_INTEGER | Read, Write  | 0
     | 11    | ENTITY_PROPERTY_ATTACK_ID_INCOMING      |     VT_PTR | Read         | 0F3BF79C
     | 12    | ENTITY_PROPERTY_ATTACK_ID_OUTGOING      | VT_INTEGER | Read, Write  | 0
     | 13    | ENTITY_PROPERTY_ATTACK_STATE            | VT_INTEGER | Read, Write  | 2
     | 14    | ENTITY_PROPERTY_AUTOKILL                | VT_INTEGER | Read, Write  | 0
     | 15    | ENTITY_PROPERTY_BACK_HIT_DIRECTION      | VT_INTEGER | Read, Write  | 0
     | 16    | ENTITY_PROPERTY_BIND                    |     VT_PTR | Read         | 0F3BF2A0
     | 17    | ENTITY_PROPERTY_BLAST_STATE             | VT_INTEGER | Read, Write  | 0
     | 18    | ENTITY_PROPERTY_BLINK                   | VT_INTEGER | Read, Write  | 0
     | 19    | ENTITY_PROPERTY_BLOCK_STATE             | VT_INTEGER | Read, Write  | 0
     | 20    | ENTITY_PROPERTY_BOSS                    | VT_INTEGER | Read, Write  | 0
     | 21    | ENTITY_PROPERTY_CHARGE_STATE            | VT_INTEGER | Read, Write  | 0
     | 22    | ENTITY_PROPERTY_CHILD                   |     VT_PTR | Read, Write  | 00000000
     | 23    | ENTITY_PROPERTY_COLORSET_DEFAULT        | VT_INTEGER | Read, Write  | 0
     | 24    | ENTITY_PROPERTY_COLORSET_DYING_HEALTH_1 | VT_INTEGER | Read, Write  | 0
     | 25    | ENTITY_PROPERTY_COLORSET_DYING_HEALTH_2 | VT_INTEGER | Read, Write  | 0
     | 26    | ENTITY_PROPERTY_COLORSET_DYING_INDEX_1  | VT_INTEGER | Read, Write  | 0
     | 27    | ENTITY_PROPERTY_COLORSET_DYING_INDEX_2  | VT_INTEGER | Read, Write  | 0
     | 28    | ENTITY_PROPERTY_COLORSET_TABLE          |     VT_PTR | Read, Write  | 0F3290F0
     | 29    | ENTITY_PROPERTY_COLORSET_TIME           | VT_INTEGER | Read, Write  | 0
     | 30    | ENTITY_PROPERTY_COMBO_STEP              |     VT_PTR | Read         | 0F3BF7B8
     | 31    | ENTITY_PROPERTY_COMBO_TIME              | VT_INTEGER | Read, Write  | 0
     | 32    | ENTITY_PROPERTY_COMMAND_TIME            | VT_INTEGER | Read, Write  | 400
     | 33    | ENTITY_PROPERTY_DAMAGE_ON_LANDING       |     VT_PTR | Read         | 0F3BF298
     | 34    | ENTITY_PROPERTY_DEATH_STATE             | VT_INTEGER | Read, Write  | 0
     | 35    | ENTITY_PROPERTY_DEFENSE                 |     VT_PTR | Read         | 0F440230
     | 36    | ENTITY_PROPERTY_DESTINATION_X           | VT_DECIMAL | Read, Write  | 0.000000
     | 37    | ENTITY_PROPERTY_DESTINATION_Z           | VT_DECIMAL | Read, Write  | 0.000000
     | 38    | ENTITY_PROPERTY_DIE_ON_LANDING          | VT_INTEGER | Read, Write  | 0
     | 39    | ENTITY_PROPERTY_DRAWMETHOD              |     VT_PTR | Read, Write  | 0F961ED0
     | 40    | ENTITY_PROPERTY_DROP                    | VT_INTEGER | Read, Write  | 0
     | 41    | ENTITY_PROPERTY_DUCK_STATE              | VT_INTEGER | Read, Write  | 0
     | 42    | ENTITY_PROPERTY_ENTVAR_COLLECTION       |     VT_PTR | Read, Write  | 0F332168
     | 43    | ENTITY_PROPERTY_ESCAPE_COUNT            | VT_INTEGER | Read, Write  | 0
     | 44    | ENTITY_PROPERTY_EXISTS                  | VT_INTEGER | Read, Write  | 1
     | 45    | ENTITY_PROPERTY_EXPLODE                 | VT_INTEGER | Read, Write  | 0
     | 46    | ENTITY_PROPERTY_FACTION                 |     VT_PTR | Read         | 0F3BF2F8
     | 47    | ENTITY_PROPERTY_FALL_STATE              | VT_INTEGER | Read, Write  | 0
     | 48    | ENTITY_PROPERTY_FREEZE_STATE            | VT_INTEGER | Read, Write  | 0
     | 49    | ENTITY_PROPERTY_FREEZE_TIME             | VT_INTEGER | Read, Write  | 0
     | 50    | ENTITY_PROPERTY_FUNCTION_TAKE_ACTION    |     VT_PTR | Read, Write  | 0044C110
     | 51    | ENTITY_PROPERTY_FUNCTION_TAKE_DAMAGE    |     VT_PTR | Read, Write  | 0045C930
     | 52    | ENTITY_PROPERTY_FUNCTION_THINK          |     VT_PTR | Read, Write  | 00456710
     | 53    | ENTITY_PROPERTY_FUNCTION_TRY_MOVE       |     VT_PTR | Read, Write  | 0044EE10
     | 54    | ENTITY_PROPERTY_GET_STATE               | VT_INTEGER | Read, Write  | 0
     | 55    | ENTITY_PROPERTY_GRAB_TARGET             |     VT_PTR | Read, Write  | 00000000
     | 56    | ENTITY_PROPERTY_GRAB_WALK_STATE         | VT_INTEGER | Read, Write  | 0
     | 57    | ENTITY_PROPERTY_GUARD_POINTS            | VT_INTEGER | Read, Write  | 0
     | 58    | ENTITY_PROPERTY_GUARD_TIME              | VT_INTEGER | Read, Write  | 0
     | 59    | ENTITY_PROPERTY_HP                      | VT_INTEGER | Read, Write  | 100
     | 60    | ENTITY_PROPERTY_HP_OLD                  | VT_INTEGER | Read, Write  | 100
     | 61    | ENTITY_PROPERTY_IDLE_STATE              | VT_INTEGER | Read, Write  | 0
     | 62    | ENTITY_PROPERTY_IN_PAIN                 | VT_INTEGER | Read, Write  | 0
     | 63    | ENTITY_PROPERTY_IN_PAIN_BACK            | VT_INTEGER | Read, Write  | 0
     | 64    | ENTITY_PROPERTY_INVINCIBLE_STATE        | VT_INTEGER | Read, Write  | 0
     | 65    | ENTITY_PROPERTY_INVINCIBLE_TIME         | VT_INTEGER | Read, Write  | 0
     | 66    | ENTITY_PROPERTY_ITEM_DATA               |     VT_PTR | Read, Write  | 00000000
     | 67    | ENTITY_PROPERTY_JUMP_ANIMATION_ID       | VT_INTEGER | Read, Write  | 3
     | 68    | ENTITY_PROPERTY_JUMP_STATE              | VT_INTEGER | Read, Write  | 1
     | 69    | ENTITY_PROPERTY_JUMP_VELOCITY_X         | VT_DECIMAL | Read, Write  | 512.000121
     | 70    | ENTITY_PROPERTY_JUMP_VELOCITY_Y         | VT_DECIMAL | Read, Write  | 0.000000
     | 71    | ENTITY_PROPERTY_JUMP_VELOCITY_Z         | VT_DECIMAL | Read, Write  | 0.000000
     | 72    | ENTITY_PROPERTY_KNOCKDOWN_COUNT         | VT_INTEGER | Read, Write  | 0
     | 73    | ENTITY_PROPERTY_KNOCKDOWN_TIME          | VT_INTEGER | Read, Write  | 0
     | 74    | ENTITY_PROPERTY_LAST_DAMAGE_TYPE        | VT_INTEGER | Read, Write  | 0
     | 75    | ENTITY_PROPERTY_LAST_HIT                |     VT_PTR | Read, Write  | 00000000
     | 76    | ENTITY_PROPERTY_LIFESPAN                | VT_INTEGER | Read, Write  | 2147483647
     | 77    | ENTITY_PROPERTY_LINK                    |     VT_PTR | Read, Write  | 00000000
     | 78    | ENTITY_PROPERTY_MODEL                   |     VT_PTR | Read, Write  | 0496B218
     | 79    | ENTITY_PROPERTY_MODEL_DATA              |     VT_PTR | Read         | 0F3BF314
     | 80    | ENTITY_PROPERTY_MODEL_DATA              |     VT_PTR | Read, Write  | 0496B218
     | 81    | ENTITY_PROPERTY_MOVE_TIME               | VT_INTEGER | Read, Write  | 351
     | 82    | ENTITY_PROPERTY_MOVE_X                  | VT_DECIMAL | Read, Write  | 0.000000
     | 83    | ENTITY_PROPERTY_MOVE_Z                  | VT_DECIMAL | Read, Write  | 0.007813
     | 84    | ENTITY_PROPERTY_MP                      | VT_INTEGER | Read, Write  | 100
     | 85    | ENTITY_PROPERTY_MP_CHARGE_TIME          | VT_INTEGER | Read, Write  | 0
     | 86    | ENTITY_PROPERTY_MP_OLD                  | VT_INTEGER | Read, Write  | 100
     | 87    | ENTITY_PROPERTY_MP_TIME                 | VT_INTEGER | Read, Write  | 401
     | 88    | ENTITY_PROPERTY_NAME                    |     VT_STR | Read, Write  | Valis_Yuan
     | 89    | ENTITY_PROPERTY_NEXT_ATTACK_TIME        | VT_INTEGER | Read, Write  | 0
     | 90    | ENTITY_PROPERTY_NEXT_HIT_TIME           | VT_INTEGER | Read, Write  | 0
     | 91    | ENTITY_PROPERTY_NOGRAB                  | VT_INTEGER | Read, Write  | 0
     | 92    | ENTITY_PROPERTY_NOGRAB_DEFAULT          | VT_INTEGER | Read, Write  | 0
     | 93    | ENTITY_PROPERTY_OBSTRUCTED              | VT_INTEGER | Read, Write  | 0
     | 94    | ENTITY_PROPERTY_OBSTRUCTION_OVERHEAD    | VT_INTEGER | Read, Write  | 0
     | 95    | ENTITY_PROPERTY_OFFENSE                 |     VT_PTR | Read, Write  | 0F3E75B0
     | 96    | ENTITY_PROPERTY_OPPONENT                |     VT_PTR | Read, Write  | 00000000
     | 97    | ENTITY_PROPERTY_OWNER                   |     VT_PTR | Read, Write  | 00000000
     | 98    | ENTITY_PROPERTY_PARENT                  |     VT_PTR | Read, Write  | 00000000
     | 99    | ENTITY_PROPERTY_PATH_OBSTRUCTED_WAIT    | VT_INTEGER | Read, Write  | 0
     | 100   | ENTITY_PROPERTY_PAUSE_TIME              | VT_INTEGER | Read, Write  | 0
     | 101   | ENTITY_PROPERTY_PLATFORM_LAND           |     VT_PTR | Read, Write  | 00000000
     | 102   | ENTITY_PROPERTY_PLAYER_INDEX            | VT_INTEGER | Read, Write  | 0
     | 103   | ENTITY_PROPERTY_POSITION_BASE           | VT_DECIMAL | Read, Write  | 0.000000
     | 104   | ENTITY_PROPERTY_POSITION_BASE_ALTERNATE | VT_DECIMAL | Read, Write  | 0.000000
     | 105   | ENTITY_PROPERTY_POSITION_DIRECTION      | VT_INTEGER | Read, Write  | 1
     | 106   | ENTITY_PROPERTY_POSITION_X              | VT_DECIMAL | Read, Write  | 3600909096000.003900
     | 107   | ENTITY_PROPERTY_POSITION_Y              | VT_DECIMAL | Read, Write  | 50668528395721144.000000
     | 108   | ENTITY_PROPERTY_POSITION_Z              | VT_DECIMAL | Read, Write  | 0.007813
     | 109   | ENTITY_PROPERTY_PROJECTILE_PRIME        | VT_INTEGER | Read, Write  | 0
     | 110   | ENTITY_PROPERTY_RECURSIVE_DAMAGE        |     VT_PTR | Read, Write  | 00000000
     | 111   | ENTITY_PROPERTY_RELEASE_TIME            | VT_INTEGER | Read, Write  | 0
     | 112   | ENTITY_PROPERTY_RISE_ATTACK_DELAY       | VT_INTEGER | Read, Write  | 0
     | 113   | ENTITY_PROPERTY_RISE_ATTACK_TIME        | VT_INTEGER | Read, Write  | 0
     | 114   | ENTITY_PROPERTY_RISE_DELAY              | VT_INTEGER | Read, Write  | 0
     | 115   | ENTITY_PROPERTY_RISE_STATE              | VT_INTEGER | Read, Write  | 0
     | 116   | ENTITY_PROPERTY_RUN_STATE               | VT_INTEGER | Read, Write  | 0
     | 117   | ENTITY_PROPERTY_RUSH                    |     VT_PTR | Read         | 0F3BF6A4
     | 118   | ENTITY_PROPERTY_SCRIPT                  |     VT_PTR | Read, Write  | 04962370
     | 119   | ENTITY_PROPERTY_SEAL_ENERGY             | VT_INTEGER | Read, Write  | 0
     | 120   | ENTITY_PROPERTY_SEAL_TIME               | VT_INTEGER | Read, Write  | 0
     | 121   | ENTITY_PROPERTY_SHADOW_CONFIG_FLAGS     | VT_INTEGER | Read, Write  | 24
     | 122   | ENTITY_PROPERTY_SLEEP_TIME              | VT_INTEGER | Read, Write  | 1350
     | 123   | ENTITY_PROPERTY_SORT_ID                 | VT_INTEGER | Read, Write  | 0
     | 124   | ENTITY_PROPERTY_SPACE_OTHER             |     VT_PTR | Read, Write  | 00000000
     | 125   | ENTITY_PROPERTY_SPAWN_TYPE              | VT_INTEGER | Read, Write  | 13
     | 126   | ENTITY_PROPERTY_SPEED_MULTIPLIER        | VT_DECIMAL | Read, Write  | 0.000000
     | 127   | ENTITY_PROPERTY_STALL_TIME              | VT_INTEGER | Read, Write  | 0
     | 128   | ENTITY_PROPERTY_THINK_TIME              | VT_INTEGER | Read, Write  | 353
     | 129   | ENTITY_PROPERTY_TIMESTAMP               | VT_INTEGER | Read, Write  | 0
     | 130   | ENTITY_PROPERTY_TO_COST                 | VT_INTEGER | Read, Write  | 0
     | 131   | ENTITY_PROPERTY_TOSS_TIME               | VT_INTEGER | Read, Write  | 351
     | 132   | ENTITY_PROPERTY_TURN_STATE              | VT_INTEGER | Read, Write  | 0
     | 133   | ENTITY_PROPERTY_TURN_TIME               | VT_INTEGER | Read, Write  | 0
     | 134   | ENTITY_PROPERTY_UPDATE_MARK             | VT_INTEGER | Read, Write  | 1
     | 135   | ENTITY_PROPERTY_VELOCITY_X              | VT_DECIMAL | Read, Write  | 0.175002
     | 136   | ENTITY_PROPERTY_VELOCITY_Y              | VT_DECIMAL | Read, Write  | 0.000000
     | 137   | ENTITY_PROPERTY_VELOCITY_Z              | VT_DECIMAL | Read, Write  | 0.000000
     | 138   | ENTITY_PROPERTY_WALK_STATE              | VT_INTEGER | Read, Write  | 0
     | 139   | ENTITY_PROPERTY_WAYPOINT                |     VT_PTR | Read, Write  | 00000000
     | 140   | ENTITY_PROPERTY_WAYPOINT_COUNT          | VT_INTEGER | Read, Write  | 0
     | 141   | ENTITY_PROPERTY_WEAPON_ITEM             |     VT_PTR | Read, Write  | 00000000
     | 142   | ENTITY_PROPERTY_WEAPON_STATE            | VT_INTEGER | Read, Write  | 0


I wrote this code - it's all on me. Sorry about that! :oops:

I'll post more details and fixes as I have them.

DC

Fixed.


Another small issue, in openborscript.c :

Code:
 case _ep_hitbyid:
    {
        ScriptVariant_ChangeType(*pretvar, VT_INTEGER);
        (*pretvar)->lVal = (uintptr_t)ent->attack_id_incoming;
        break;
    }

This is relating to the getter of "hitbyid". It seems "ent->attack_id_incoming" was previously an integer, but now it's an array, so the code should be something like this I guess :

Code:
 case _ep_hitbyid:
    {
        ScriptVariant_ChangeType(*pretvar, VT_INTEGER);
        (*pretvar)->lVal = (uintptr_t)ent->attack_id_incoming[0];
        break;
    }

The setter of this property seems to already have been updated to take this change into account, but not the getter.
Fixed.


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);
    }
}
Fixed.
 
the android apk will need to be compiled by @Kratus as i cant compile on Linux but i am trying to update so it works on Linux and i can add it to future releases myself.
@msmalik681 I tried to compile the Android build using the latest source but I'm getting some errors, maybe related to the docker.
I will take a look but unfortunately currently I can't help too much because I stopped following the engine updates after the 7612.

1746395072184.png
 
Back
Top Bottom