Skip to content

Commit 9f30ea1

Browse files
committed
Fixed groups not working properly
1 parent 3544e44 commit 9f30ea1

3 files changed

Lines changed: 33 additions & 27 deletions

File tree

ModelVariations/LogUtil.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include <string>
55
#include <iostream>
66

7-
#define MOD_VERSION "6.0"
7+
#define MOD_VERSION "6.1"
88
#ifdef _DEBUG
99
#define MOD_NAME "ModelVariations_d.asi"
1010
#else

ModelVariations/ModelVariations.cpp

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -399,102 +399,103 @@ class ModelVariations {
399399

400400
for (int i = 0; i < 300; i++)
401401
{
402-
std::vector<short> vec = iniLineParser(std::to_string(i), "Countryside", &iniPed);
402+
std::string section = std::to_string(i);
403+
std::vector<short> vec = iniLineParser(section, "Countryside", &iniPed);
403404
pedVariations[i][0] = vec;
404405
std::sort(pedVariations[i][0].begin(), pedVariations[i][0].end());
405406

406-
vec = iniLineParser(std::to_string(i), "LosSantos", &iniPed);
407+
vec = iniLineParser(section, "LosSantos", &iniPed);
407408
pedVariations[i][1] = vec;
408409
std::sort(pedVariations[i][1].begin(), pedVariations[i][1].end());
409410

410-
vec = iniLineParser(std::to_string(i), "SanFierro", &iniPed);
411+
vec = iniLineParser(section, "SanFierro", &iniPed);
411412
pedVariations[i][2] = vec;
412413
std::sort(pedVariations[i][2].begin(), pedVariations[i][2].end());
413414

414-
vec = iniLineParser(std::to_string(i), "LasVenturas", &iniPed);
415+
vec = iniLineParser(section, "LasVenturas", &iniPed);
415416
pedVariations[i][3] = vec;
416417
std::sort(pedVariations[i][3].begin(), pedVariations[i][3].end());
417418

418-
vec = iniLineParser(std::to_string(i), "Global", &iniPed);
419+
vec = iniLineParser(section, "Global", &iniPed);
419420
pedVariations[i][4] = vec;
420421
std::sort(pedVariations[i][4].begin(), pedVariations[i][4].end());
421422

422-
vec = iniLineParser(std::to_string(i), "Desert", &iniPed);
423+
vec = iniLineParser(section, "Desert", &iniPed);
423424
pedVariations[i][5] = vec;
424425
std::sort(pedVariations[i][5].begin(), pedVariations[i][5].end());
425426

426-
vec = iniLineParser(std::to_string(i), "TierraRobada", &iniPed);
427+
vec = iniLineParser(section, "TierraRobada", &iniPed);
427428
pedVariations[i][6] = vec;
428429
std::sort(pedVariations[i][6].begin(), pedVariations[i][6].end());
429430
vectorUnion(pedVariations[i][6], pedVariations[i][5], vec);
430431
pedVariations[i][6] = vec;
431432

432-
vec = iniLineParser(std::to_string(i), "BoneCounty", &iniPed);
433+
vec = iniLineParser(section, "BoneCounty", &iniPed);
433434
pedVariations[i][7] = vec;
434435
std::sort(pedVariations[i][7].begin(), pedVariations[i][7].end());
435436
vectorUnion(pedVariations[i][7], pedVariations[i][5], vec);
436437
pedVariations[i][7] = vec;
437438

438-
vec = iniLineParser(std::to_string(i), "RedCounty", &iniPed);
439+
vec = iniLineParser(section, "RedCounty", &iniPed);
439440
pedVariations[i][8] = vec;
440441
std::sort(pedVariations[i][8].begin(), pedVariations[i][8].end());
441442
vectorUnion(pedVariations[i][8], pedVariations[i][0], vec);
442443
pedVariations[i][8] = vec;
443444

444-
vec = iniLineParser(std::to_string(i), "Blueberry", &iniPed);
445+
vec = iniLineParser(section, "Blueberry", &iniPed);
445446
pedVariations[i][9] = vec;
446447
std::sort(pedVariations[i][9].begin(), pedVariations[i][9].end());
447448
vectorUnion(pedVariations[i][9], pedVariations[i][8], vec);
448449
pedVariations[i][9] = vec;
449450

450-
vec = iniLineParser(std::to_string(i), "Montgomery", &iniPed);
451+
vec = iniLineParser(section, "Montgomery", &iniPed);
451452
pedVariations[i][10] = vec;
452453
std::sort(pedVariations[i][10].begin(), pedVariations[i][10].end());
453454
vectorUnion(pedVariations[i][10], pedVariations[i][8], vec);
454455
pedVariations[i][10] = vec;
455456

456-
vec = iniLineParser(std::to_string(i), "Dillimore", &iniPed);
457+
vec = iniLineParser(section, "Dillimore", &iniPed);
457458
pedVariations[i][11] = vec;
458459
std::sort(pedVariations[i][11].begin(), pedVariations[i][11].end());
459460
vectorUnion(pedVariations[i][11], pedVariations[i][8], vec);
460461
pedVariations[i][10] = vec;
461462

462-
vec = iniLineParser(std::to_string(i), "PalominoCreek", &iniPed);
463+
vec = iniLineParser(section, "PalominoCreek", &iniPed);
463464
pedVariations[i][12] = vec;
464465
std::sort(pedVariations[i][12].begin(), pedVariations[i][12].end());
465466
vectorUnion(pedVariations[i][12], pedVariations[i][8], vec);
466467
pedVariations[i][10] = vec;
467468

468-
vec = iniLineParser(std::to_string(i), "FlintCounty", &iniPed);
469+
vec = iniLineParser(section, "FlintCounty", &iniPed);
469470
pedVariations[i][13] = vec;
470471
std::sort(pedVariations[i][13].begin(), pedVariations[i][13].end());
471472
vectorUnion(pedVariations[i][13], pedVariations[i][0], vec);
472473
pedVariations[i][13] = vec;
473474

474-
vec = iniLineParser(std::to_string(i), "Whetstone", &iniPed);
475+
vec = iniLineParser(section, "Whetstone", &iniPed);
475476
pedVariations[i][14] = vec;
476477
std::sort(pedVariations[i][14].begin(), pedVariations[i][14].end());
477478
vectorUnion(pedVariations[i][14], pedVariations[i][0], vec);
478479
pedVariations[i][14] = vec;
479480

480-
vec = iniLineParser(std::to_string(i), "AngelPine", &iniPed);
481+
vec = iniLineParser(section, "AngelPine", &iniPed);
481482
pedVariations[i][15] = vec;
482483
std::sort(pedVariations[i][15].begin(), pedVariations[i][15].end());
483484
vectorUnion(pedVariations[i][15], pedVariations[i][14], vec);
484485
pedVariations[i][15] = vec;
485486

486487

487-
vec = iniLineParser(std::to_string(i), "Wanted1", &iniPed);
488+
vec = iniLineParser(section, "Wanted1", &iniPed);
488489
pedWantedVariations[i][0] = vec;
489-
vec = iniLineParser(std::to_string(i), "Wanted2", &iniPed);
490+
vec = iniLineParser(section, "Wanted2", &iniPed);
490491
pedWantedVariations[i][1] = vec;
491-
vec = iniLineParser(std::to_string(i), "Wanted3", &iniPed);
492+
vec = iniLineParser(section, "Wanted3", &iniPed);
492493
pedWantedVariations[i][2] = vec;
493-
vec = iniLineParser(std::to_string(i), "Wanted4", &iniPed);
494+
vec = iniLineParser(section, "Wanted4", &iniPed);
494495
pedWantedVariations[i][3] = vec;
495-
vec = iniLineParser(std::to_string(i), "Wanted5", &iniPed);
496+
vec = iniLineParser(section, "Wanted5", &iniPed);
496497
pedWantedVariations[i][4] = vec;
497-
vec = iniLineParser(std::to_string(i), "Wanted6", &iniPed);
498+
vec = iniLineParser(section, "Wanted6", &iniPed);
498499
pedWantedVariations[i][5] = vec;
499500

500501

ModelVariations/Vehicles.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ int roadblockModel = -1;
2424
int sirenModel = -1;
2525
int lightsModel = -1;
2626
int currentOccupantsGroup = -1;
27+
int currentOccupantsModel = -1;
2728

2829
int fireCmpModel = -1;
2930

@@ -426,6 +427,7 @@ void __cdecl AddPoliceCarOccupantsHooked(CVehicle* a2, char a3)
426427
CWanted* wanted = FindPlayerWanted(-1);
427428
int wantedLevel = (wanted->m_nWantedLevel > 0) ? (wanted->m_nWantedLevel - 1) : (wanted->m_nWantedLevel);
428429
int i = CGeneral::GetRandomNumberInRange(0, vehGroupWantedVariations[a2->m_nModelIndex][wantedLevel].size());
430+
currentOccupantsModel = a2->m_nModelIndex;
429431
if (!vehGroupWantedVariations[a2->m_nModelIndex][wantedLevel].empty() && vehGroupWantedVariations[a2->m_nModelIndex][wantedLevel][i] <= it->second)
430432
currentOccupantsGroup = vehGroupWantedVariations[a2->m_nModelIndex][wantedLevel][i]-1;
431433
else
@@ -441,6 +443,7 @@ void __cdecl AddPoliceCarOccupantsHooked(CVehicle* a2, char a3)
441443

442444
a2->m_nModelIndex = model;
443445
currentOccupantsGroup = -1;
446+
currentOccupantsModel = -1;
444447
}
445448

446449
template <unsigned int address>
@@ -621,9 +624,9 @@ DWORD __cdecl FindSpecificDriverModelForCar_ToUseHooked(int carModel)
621624
{
622625
auto it = vehDrivers.find(carModel);
623626
int replaceDriver = iniVeh.ReadInteger(std::to_string(carModel), "ReplaceDriver", 0);
624-
if (currentOccupantsGroup > -1 && currentOccupantsGroup < 9)
627+
if (currentOccupantsGroup > -1 && currentOccupantsGroup < 9 && currentOccupantsModel > -1)
625628
{
626-
auto itGroup = vehDriverGroups[currentOccupantsGroup].find(carModel);
629+
auto itGroup = vehDriverGroups[currentOccupantsGroup].find(currentOccupantsModel);
627630
if (itGroup != vehDriverGroups[currentOccupantsGroup].end())
628631
{
629632
int random = CGeneral::GetRandomNumberInRange(0, itGroup->second.size());
@@ -715,6 +718,7 @@ void __cdecl SetUpDriverAndPassengersForVehicleHooked(CVehicle* car, int a3, int
715718
CWanted* wanted = FindPlayerWanted(-1);
716719
int wantedLevel = (wanted->m_nWantedLevel > 0) ? (wanted->m_nWantedLevel - 1) : (wanted->m_nWantedLevel);
717720
int i = CGeneral::GetRandomNumberInRange(0, vehGroupWantedVariations[car->m_nModelIndex][wantedLevel].size());
721+
currentOccupantsModel = car->m_nModelIndex;
718722
if (!vehGroupWantedVariations[car->m_nModelIndex][wantedLevel].empty() && vehGroupWantedVariations[car->m_nModelIndex][wantedLevel][i] <= it->second)
719723
currentOccupantsGroup = vehGroupWantedVariations[car->m_nModelIndex][wantedLevel][i]-1;
720724
else
@@ -749,6 +753,7 @@ void __cdecl SetUpDriverAndPassengersForVehicleHooked(CVehicle* car, int a3, int
749753

750754
car->m_nModelIndex = model;
751755
currentOccupantsGroup = -1;
756+
currentOccupantsModel = -1;
752757
}
753758

754759
template <unsigned int address>
@@ -795,9 +800,9 @@ CPed* __cdecl AddPedInCarHooked(CVehicle* a1, char a2, int a3, signed int a4, in
795800
{
796801
int replacePassenger = iniVeh.ReadInteger(std::to_string(a1->m_nModelIndex), "ReplacePassengers", 0);
797802
auto it = vehPassengers.find(a1->m_nModelIndex);
798-
if (currentOccupantsGroup > -1 && currentOccupantsGroup < 9)
803+
if (currentOccupantsGroup > -1 && currentOccupantsGroup < 9 && currentOccupantsModel > -1)
799804
{
800-
auto itGroup = vehPassengerGroups[currentOccupantsGroup].find(a1->m_nModelIndex);
805+
auto itGroup = vehPassengerGroups[currentOccupantsGroup].find(currentOccupantsModel);
801806
if (itGroup != vehPassengerGroups[currentOccupantsGroup].end())
802807
{
803808
random = CGeneral::GetRandomNumberInRange(0, itGroup->second.size());

0 commit comments

Comments
 (0)