You need to be careful when you define arrays using an enumerator. In your case you did not define what you think you did and you will sometimes see no compile errors, your code will just not do what you expect.
See if this helps:
PHP Code:
#include < amxmodx >
enum _: enumfirst
{
enum1,
enum2,
enum3,
enum4
};
enum _: enumsecond
{
enumone[ 6 ], //sized at 6 to hold the largest possible string, in this case 'three'
enumtwo[ 3 ], //sized to hold 3 numbers
enumthree[ 2 ] //sized to hold 2 numbers
};
new szHello[ enumfirst ][ enumsecond ] =
{
{ "one" , { 1, 2, 3 } , { 4,5 } },
{ "two" , { 6, 7, 8 } , { 9,10 } },
{ "three" , { 11, 12, 13 } , { 14,15 } },
{ "four" , { 16, 17, 18 } , { 19,20 } }
};
public plugin_init()
{
for ( new i = 0 ; i < enumfirst ; i++ )
{
server_print( "String: %s" , szHello[ i ][ enumone ] );
server_print( "int: %d %d %d" , szHello[ i ][ enumtwo ][ 0 ] , szHello[ i ][ enumtwo ][ 1 ] , szHello[ i ][ enumtwo ][ 2 ] );
server_print( "int: %d %d" , szHello[ i ][ enumthree ][ 0 ] , szHello[ i ][ enumthree ][ 1 ] );
}
server_print( "sizeof main array: %d" , sizeof( szHello ) );
server_print( "sizeof enumone in enumsecond: %d" , sizeof( szHello[][ enumone ] ) );
server_print( "sizeof enumtwo in enumsecond: %d" , sizeof( szHello[][ enumtwo ] ) );
server_print( "sizeof enumthree in enumsecond: %d" , sizeof( szHello[][ enumthree ] ) );
return PLUGIN_HANDLED;
}
Output
Code:
String: one
int: 1 2 3
int: 4 5
String: two
int: 6 7 8
int: 9 10
String: three
int: 11 12 13
int: 14 15
String: four
int: 16 17 18
int: 19 20
sizeof main array: 4
sizeof enumone in enumsecond: 6
sizeof enumtwo in enumsecond: 3
sizeof enumthree in enumsecond: 2
__________________