Raistlin, в событии OnSavegameWrite нужно вызывать WriteSavegameSection с указанием адреса массива (в С++ — как раз просто имя) и размером массива в байтах.
Рекомендую иметь свою секцию/ии с уникальными именем. Первое поле писать uint32 с размером массива, затем сам массив.
В OnSavegameRead делаешь так:
Code:
int arraySize;
if (ReadSavegameSection(sizeof(arraySize), (void*) &arraySize, 'section name')) == sizeof(arraySize) && arraySize = макрос_получения_размера_массива(...)) {
Так, всё верно:
1) Плагин ранее записал данные, поскольку мы прочитали заголовок в 4 байта
2) Записанный размер массива равен реальному размеру, значит плагин не устарел, та же версия
}
Мои секции называются в стиле Era.PO, Era.Triggers и т.д.
Если сохраняешь строки, то сперва пиши int32 длину строки, затем её содержимое. Читай также. В Эре есть высокоуровневая обвязка с функциями вида ReadInt, ReadStr, ReadByte.