Форматы файлов сохранения.md
sfallgv.sav
Структура файла.
// Sfall Savegame sfallgv.sav
LittleEndian();
typedef struct {
union {
char name[8];
int64 id;
} _id;
union {
int val;
float fval;
} _val;
int unused;
} TGlobal;
DWORD globalsCount; // количество sfall глобальных переменных (начало файла)
for (i=0; i<globalsCount; i++) TGlobal gvar;
DWORD uniqueID; // счетчик уникальных номеров для объектов
short addedYears; // количество прошедших лет
short GainStatFix; // old now unused
typedef struct {
int Level;
int Image;
char Name[64];
char Desc[512];
char gap[510]; // reserve block
short id; // индификатор перка
} TFakePerk;
DWORD traitsCount;
for (i=0; i<traitsCount; i++)
TFakePerk trait;
DWORD fakePerksCount;
for (i=0; i<fakePerksCount; i++)
TFakePerk fakePerk;
DWORD selectablePerksCount;
for (i=0; i<selectablePerksCount; i++)
TFakePerk selPerk;
DWORD unused; // for backward compatibility with 3.3-
DWORD arraysCount; // количество сохраненных массивов
for (i=0; i<arraysCount; i++)
TArray2 array;
// NEW arrays:
typedef struct {
TDataType dataType;
if (dataType == _FLOAT) {
float val;
} else if (dataType == _STR) {
DWORD strLen;
char str[strLen];
} else {
int val;
}
} TElement2;
typedef struct {
//DWORD hash;
//DWORD _unused;
DWORD flags;
DWORD size;
if (flags & 1) {
for (j=0; j<size/2; j++) {
TElement2 key;
TElement2 val;
}
} else {
for (j=0; j<size; j++) {
TElement2 val;
}
}
} TArray2;
if (!FEof()) {
DWORD arrays2Count;
for (i=0; i<arrays2Count; i++)
TArray2 array;
}
typedef enum <DWORD> {_NONE = 0 , _INT = 1, _FLOAT = 2, _STR = 3} TDataType;
////////////// OLD arrays format ////////////////////
typedef struct {
if (dataType[j] == _FLOAT) {
float val;
FSkip(datalen - 4);
} else if (dataType[j] == _STR) {
char val[datalen];
} else {
int val;
FSkip(datalen - 4);
}
} TElement;
typedef struct {
DWORD id;
DWORD len;
DWORD datalen;
TDataType dataType[len];
for (j=0; j<len; j++) {
TElement val;
}
} TArray;
// после массивов идут данные об использованных предметов Drugs для персонажа игрока
DWORD count;
sfalldb.sav
- Содержит данные о текущем состоянии возможности отдыха на картах.
- Данные характеристик критеров при использовании ими предметов типа
Drugs
. - В конце файла всегда содержится номер версии sfall в формате:
00 XX XX XX
в котором произошло сохранение.