-
Почему так работает?
Доброго времени суток! Делал систему кое-чего с использованием чекпоинтов стримера координаты которых хранились в таком массиве
PHP код:
enum partinfo
{
Float:PartPos[3]
}
new PartInfo[][partinfo] =
{
{1301.3738, -1301.1459, 18.8723},
{1301.3729, -1295.5941, 18.8703},
{1306.6167, -1301.1685, 18.8723},
{1306.6167, -1295.5470, 18.8703},
{1310.9929, -1300.9169, 18.8723},
{1310.9919, -1295.5013, 18.8703},
{1316.5524, -1300.8939, 18.8723},
{1316.5524, -1295.4950, 18.8703}
};
И мне выдавало ошибки указывая на первую строчку координат в массиве:
PHP код:
C:\Users\\Desktop\Ìîä\\gamemodes\.pwn(441) : warning 227: more initiallers than enum fields
C:\Users\\Desktop\Ìîä\\gamemodes\.pwn(441) : warning 213: tag mismatch
C:\Users\\Desktop\Ìîä\\gamemodes\.pwn(441) : warning 227: more initiallers than enum fields
C:\Users\\Desktop\Ìîä\\gamemodes\.pwn(441) : warning 213: tag mismatch
C:\Users\\Desktop\Ìîä\\gamemodes\.pwn(441) : error 018: initialization data exceeds declared size
Поискав в гугле, я даже не нашел варнинга 227 в списке всех ошибок и варнингов Pawn. Везде, хоть таких мест было мало, советовали сделать из
PHP код:
enum partinfo
{
Float:PartPos[3]
}
PHP код:
enum partinfo
{
Float:PartPosX,
Float:PartPosY,
Float:PartPosZ
}
Так и правда, все начинало работать. Но я не мог с этим смириться, и решил добиться чего хотел. Методом проб и ошибок вышло так
PHP код:
enum partinfo
{
Float:PartPos[3]
}
new PartInfo[][partinfo] =
{
{{1301.3738, -1301.1459, 18.8723},},
{{1301.3729, -1295.5941, 18.8703},},
{{1306.6167, -1301.1685, 18.8723},},
{{1306.6167, -1295.5470, 18.8703},},
{{1310.9929, -1300.9169, 18.8723},},
{{1310.9919, -1295.5013, 18.8703},},
{{1316.5524, -1300.8939, 18.8723},},
{{1316.5524, -1295.4950, 18.8703}}
};
А главное - все работало и не выдавало варнингов и ошибок.
Собсна вопрос: ПОЧЕМУ? :pardon:
-
PHP код:
enum partinfo
{
Float: PartPos_X,
Float: PartPos_Y,
Float: PartPos_Z
}
new PartInfo[][partinfo] =
{
{1301.3738, -1301.1459, 18.8723},
{1301.3729, -1295.5941, 18.8703},
{1306.6167, -1301.1685, 18.8723},
{1306.6167, -1295.5470, 18.8703},
{1310.9929, -1300.9169, 18.8723},
{1310.9919, -1295.5013, 18.8703},
{1316.5524, -1300.8939, 18.8723},
{1316.5524, -1295.4950, 18.8703}
};
Есть только так. Как вы собрались в одной ячейке массива использовать сразу 3 переменных?
И да, так как здесь ничего особенного в массиве нет, то есть здесь присутствует только вещественный тип лучше сделать напрямую без энумератора ( если вам удобнее так - используйте так ).
PHP код:
new Float: PartInfo[][] =
{
{1301.3738, -1301.1459, 18.8723},
{1301.3729, -1295.5941, 18.8703},
{1306.6167, -1301.1685, 18.8723},
{1306.6167, -1295.5470, 18.8703},
{1310.9929, -1300.9169, 18.8723},
{1310.9919, -1295.5013, 18.8703},
{1316.5524, -1300.8939, 18.8723},
{1316.5524, -1295.4950, 18.8703}
};