class CCarGenerator {
public:
DWORD id;
CVector pos;
DWORD angle;
WORD color1;
WORD color2;
BYTE alarm;
BYTE doorLock;
BYTE field_1A;
BYTE field_1B;
WORD field_1C;
WORD field_1E;
DWORD time;
DWORD ProcessedVehicleHandle;
WORD field_28;
BYTE field_2A;
BYTE field_2B;
};
DWORD CFG_ParkedLimit = 185; // 65535?
DWORD CFG_ParkedInView = 10; // 127
bool CFG_ParkedClosely = false; // true
static void SetCarGeneratorLimit() {
CarGenerator = new CCarGenerator[CFG_ParkedLimit]; //создание нового массива парковки вместо стандартного 0xA0DC94
Patch(0x4537A9, (DWORD)CarGenerator); // переопределение всех ссылок на массив
Patch(0x5A6C5F, (DWORD)CarGenerator);
Patch(0x5A6CC3, (DWORD)CarGenerator);
Patch(0x5A69DB, (DWORD)CarGenerator);
Patch(0x5A6B16, (DWORD)CarGenerator);
Patch(0x5A69E6, (DWORD)&CarGenerator->pos.x);
Patch(0x5A6B22, (DWORD)&CarGenerator->pos.x);
Patch(0x5A69F1, (DWORD)&CarGenerator->pos.y);
Patch(0x5A6B2A, (DWORD)&CarGenerator->pos.y);
Patch(0x5A69FC, (DWORD)&CarGenerator->pos.z);
Patch(0x5A6B35, (DWORD)&CarGenerator->pos.z);
Patch(0x5A6A07, (DWORD)&CarGenerator->angle);
Patch(0x5A6B40, (DWORD)&CarGenerator->angle);
Patch(0x5A6A14, (DWORD)&CarGenerator->color1);
Patch(0x5A6B4C, (DWORD)&CarGenerator->color1);
Patch(0x5A6A21, (DWORD)&CarGenerator->color2);
Patch(0x5A6B5C, (DWORD)&CarGenerator->color2);
Patch(0x5A6A2A, (DWORD)&CarGenerator->alarm);
Patch(0x5A6B65, (DWORD)&CarGenerator->alarm);
Patch(0x5A6A33, (DWORD)&CarGenerator->doorLock);
Patch(0x5A6B6E, (DWORD)&CarGenerator->doorLock);
Patch(0x5A6A3C, (DWORD)&CarGenerator->field_1A);
Patch(0x5A6B77, (DWORD)&CarGenerator->field_1A);
Patch(0x5A6A49, (DWORD)&CarGenerator->field_1C);
Patch(0x5A6B85, (DWORD)&CarGenerator->field_1C);
Patch(0x5A6A56, (DWORD)&CarGenerator->field_1E);
Patch(0x5A6B95, (DWORD)&CarGenerator->field_1E);
Patch(0x5A6A61, (DWORD)&CarGenerator->time);
Patch(0x5A6BA1, (DWORD)&CarGenerator->time);
Patch(0x5A6A6C, (DWORD)&CarGenerator->ProcessedVehicleHandle);
Patch(0x5A6BAC, (DWORD)&CarGenerator->ProcessedVehicleHandle);
Patch(0x5A6A79, (DWORD)&CarGenerator->field_28);
Patch(0x5A6BB8, (DWORD)&CarGenerator->field_28);
Patch(0x5A6A85, (DWORD)&CarGenerator->field_2A);
Patch(0x5A6BC1, (DWORD)&CarGenerator->field_2A);
Patch(0x5A6C16, (DWORD)CFG_ParkedLimit); // лимит припаркованных машин на карте, до 65535?
Patch(0x5A71D0, (BYTE)CFG_ParkedInView); // лимит одновременно видимых припаркованных машин, до 127
if (CFG_ParkedClosely)
Patch(0x5A6FE2, (BYTE)0); // замена проверки диаметра col-а (длины машины) на ширину машины, чтобы парковалось ближе
}