struct CPool
{
DWORD objects;
DWORD flags;
DWORD size;
DWORD top;
};
auto PedPool = (CPool **) 0x97F2AC;
auto VehiclePool = (CPool **) 0xA0FDE4;
void TrafficProcess()
{
ClosestVehicle = 0;
float Radius, ClosestRadius = 9999;
// перебор всех машин
CAutomobile *TrafficVehicle = (CAutomobile *)VehiclePool[0]->objects;
for (DWORD i=0;i<VehiclePool[0]->size;i++)
{
TrafficCarProcess(&TrafficVehicle[i].Vehicle); // получили указатель СVehicle, делаем с ним что хотим в TrafficCarProcess()
// PlayerPed у меня класса CPed
Radius = pow(PlayerPed->physical.entity.matrix.rw.pos.x-TrafficVehicle[i].Vehicle.physical.entity.matrix.rw.pos.x,2)+
pow(PlayerPed->physical.entity.matrix.rw.pos.y-TrafficVehicle[i].Vehicle.physical.entity.matrix.rw.pos.y,2);
if (Radius<min(ClosestRadius,50))
{
ClosestRadius = Radius;
ClosestVehicle = &TrafficVehicle[i].Vehicle; // поиск ближайшего авто
}
}
// ClosestVehicle ближнее авто
// перебор всех людей
CPlayerPed *TrafficPed = (CPlayerPed *)PedPool[0]->objects;
for (DWORD i=0;i<PedPool[0]->size;i++)
{
TrafficPedProcess(&TrafficPed[i].Ped); // получили указатель CPed, делаем с ним что хотим в TrafficPedProcess()
}
for (int i=1;i<PlayerPed->closestPedsCount;i++) // *0x56C* CPed *closestPeds[10];
{
PlayerPed->closestPeds[i-1]; // ближние к игроку люди
}
}