Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Streamer_GetArrayData problem #4

Closed
bogdyutzu opened this issue May 7, 2014 · 3 comments
Closed

Streamer_GetArrayData problem #4

bogdyutzu opened this issue May 7, 2014 · 3 comments

Comments

@bogdyutzu
Copy link

I have this code:

main()
{
new pickup = CreateDynamicPickup( PropertyVisual[ type ][ 0 ], 23, x, y, z );

new data[ 2 ];
data[ 0 ] = e_Pickup_Property;
data[ 1 ] = propid;

Streamer_SetArrayData( STREAMER_TYPE_PICKUP, pickup , E_STREAMER_EXTRA_ID, data, 2 );
Streamer_GetArrayData( STREAMER_TYPE_PICKUP, pickup , E_STREAMER_EXTRA_ID, data, 2 );

printf("propid: %d data[0]: %d pickup %d", propid, data[ 0 ], pickup);
printf("propid: %d data[1]: %d pickup %d", propid, data[ 1 ], pickup);

}

Result of prints:
propid: 1 data[0]: 1 pickup 1
propid: 1 data[1]: 1 pickup 1

All datas are 1.

public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
new id, data[ 2 ];
Streamer_GetArrayData( STREAMER_TYPE_PICKUP, pickupid, E_STREAMER_EXTRA_ID, data );

va_SendClientMessage(playerid, -1, "data[0]: %d pickup %d", data[ 0 ], pickupid);
va_SendClientMessage(playerid, -1, "data[1]: %d pickup %d", data[ 1 ], pickupid);       

}

Result:
data[0]: 1 pickup 1
data[1]: 0 pickup 1

Data[1] is now 0 but should be 1 as in main.

@samp-incognito
Copy link
Owner

You shouldn't create anything in main. It should all be done in OnGameModeInit or OnFilterScriptInit. This works fine for me:

public OnGameModeInit()
{
    new pickupid = CreateDynamicPickup(1242, 23, 3.8998, 1505.4320, 12.7560);

    new data[2];
    data[0] = 10;
    data[1] = 20;

    Streamer_SetArrayData(STREAMER_TYPE_PICKUP, pickupid, E_STREAMER_EXTRA_ID, data);
    Streamer_GetArrayData(STREAMER_TYPE_PICKUP, pickupid, E_STREAMER_EXTRA_ID, data);

    printf("pickupid: %d data[0]: %d", pickupid, data[0]);
    printf("pickupid: %d data[1]: %d", pickupid, data[1]);
}

public OnPlayerPickUpDynamicPickup(playerid, pickupid)
{
    new data[2];

    Streamer_GetArrayData(STREAMER_TYPE_PICKUP, pickupid, E_STREAMER_EXTRA_ID, data);

    printf("pickupid: %d data[0]: %d", pickupid, data[0]);
    printf("pickupid: %d data[1]: %d", pickupid, data[1]);
}

Results:

OnGameModeInit:

pickupid: 1 data[0]: 20
pickupid: 1 data[1]: 10

OnPlayerPickUpDynamicPickup:

pickupid: 1 data[0]: 20
pickupid: 1 data[1]: 10

Of course, the data is not in the right order, but this will be fixed in v2.7.2.

@bogdyutzu
Copy link
Author

I found the bug:

If data[0] and data[1] are same, for exemple 1. One of datas will return as 0.

@samp-incognito
Copy link
Owner

Ah, I see what you mean. That could also cause a problem. Well, this is also fixed in v2.7.2, because E_STREAMER_EXTRA_ID is using a different data structure now. Thanks.

@saya1337 saya1337 mentioned this issue Sep 15, 2015
@samp-pinch samp-pinch mentioned this issue Oct 11, 2017
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants