Эмм, так потому что ты пытаешься обратиться к трехмерному массиву, когда на деле у тебя двумерный? Ттретья мера существует только когда ты обращается к члену перечисления. И существует она не как третья мера, а как своеобразный индекс для перечисления (к какой ячейке второй меры нужно обратиться, чтоб получить нужные данные) и не более.
Вот так всё будет работать
PHP код:
PlayerData[playerid][data] = '\0';
Хотя strcat всё равно не будет работать нормально, ибо не сможет нормально получить размер двумерного массива (sizeof будет выдавать 0).
Вот так будет правильнее
PHP код:
enum E_PLAYER_DATA
{
E_PLAYER_NAME[24 + 1],
E_PLAYER_PASSWORD[16 + 1],
E_PLAYER_EMAIL[144 + 1],
}
new PlayerData[MAX_PLAYERS][E_PLAYER_DATA];
stock SetPlayerData(playerid, E_PLAYER_DATA:data, const source[], const size = sizeof(source))
{
PlayerData[playerid][data] = '\0'; //если в "data" передать "E_PLAYER_PASSWORD", то, соответственно, мы обратимся к ячейке "25+1", так как перед членом перечисления "E_PLAYER_PASSWORD" находится "E_PLAYER_NAME", занимающий первые "24+1" ячеек. Соответственно, мы обнулим именно 26-ую ячейку, которая является началом "E_PLAYER_PASSWORD"
return strcat(PlayerData[playerid][data], source, size);
}