Естественно, без корректировки поведения AI.
У AI должна быть точно такая же возможность нанимать грейженных и он должен ее использовать, когда ему это выгодно.
Функцию afterHiring(), вероятно, можно сделать более компактной, но я не знаю, есть ли в recruitManager указатель на объект, в котором мы нанимаем существ. Пока что получаю объект по координатам посещающего героя.
По указателю, конечно, было бы более правильно и более компактно, если он есть в recruitManager, конечно. Но если получение объекта по координатам посещающего героя отрабатывает точно также, то пускай будет пока так.
***А можете немного пояснить Ваш код. Ибо до этого была только одина функция
setCreatures().
1) Что делает функция
afterHiring() - только получает объект по координатам посещающего героя? И зачем это нам, ведь до этого и без нее все, вроде, работало.
2) Что делает вот этот кусок кода?
- Код: Выделить всё
_Dwelling_* GetDwelling(_int_ dwellingId) {
return (_Dwelling_ *)(o_GameMgr->Field<int>(0x4E39C) + 92 * dwellingId);
}
3) И что делают вот эти два патча?
- Код: Выделить всё
_PI->WriteHexPatch(0x4A197B, "90 90");
_PI->WriteHexPatch(0x4AB812, "90 90");
***Потестил.
1) В жилищах 1-го уровня все равно изначально вылазит вот этот диалог:
а уже после нужный нам диалог найма существ.
Нужно этот первый диалог с подтверждением (Хотите ли Вы нанять...) убирать. Раз зашли, то ясное дело, что хотим. Короче нужно сделать так, как и с другими жилищами в HD моде. Окно найма сразу на входе.
2) При нажатии на кнопку найма идет вылет:
HOMM3 HD CRASH LOG - Код: Выделить всё
Log
{
compability_dir = C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\_HD3_Data\Compability\#com_ru
EXE_VERSION & SOD
ERROR: CANN'T DO PARALLEL
No Files.ini for 'C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\_HD3_Data\Compability\#com_ru'
No Files.ini for 'C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\_HD3_Data\Packs\Rus.Fonts'
No Files.ini for 'C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\_HD3_Data\Packs\CreatureUpgrade'
got sulfur in nagabank. replace it to gems.
}
HOMM3 HD version: 5.2 R31
Time { 24.04.2021 13:32:41 }
GUN: [H6B0MC9P272003AHZNHFMT HHW 139 VEL 749TY]
Exception
{
Module: CreatureUpgrade.dll
Adress: [ CreatureUpgrade.dll+0x1098 ]
Code: EXCEPTION_ACCESS_VIOLATION
Flags: 0x00000000
Information: read of address: 0xB1320272
}
Context { EAX: 0xB1320252, ECX: 0x04AF82D0, EDX: 0xF9B31E33, EBX: 0x00189430, ESP: 0x001890F8, EBP: 0x001890FC, ESI: 0x0A9FF1E0, EDI: 0x0018910C }
Call stack
{
[ CreatureUpgrade.dll+0x1050 ] called from [ 0x05250BAE ]
? called from before [ HD_SOD.dll+0x3D76B ]
[ HD_SOD.dll+0x3D5D0 ] called from [ 0x00371C57 ]
[ HD_SOD.dll+0x8AEA0 ] called from [ 0x04C21561 ]
[ HD_SOD.dll+0x7C280 ] called from [ 0x04C3168B ]
[ HW_SOD.dll+0x4570 ] called from [ 0x05251B0F ]
[ 0x004B0BA0 ] called from [ 0x004B083F ]
[ 0x004B0770 ] called from [ 0x004ABA81 ]
[ 0x004AB740 ] called from [ 0x004A1C77 ]
[ 0x004A1520 ] called from [ 0x004A8975 ]
[ 0x004A8160 ] called from [ 0x004AA766 ]
[ 0x004AA710 ] called from [ 0x00408049 ]
[ 0x00407AE0 ] called from [ 0x0040AA31 ]
[ 0x0040A530 ] called from [ 0x0040992B ]
? called from before [ HD_SOD.dll+0x1D189 ]
? called from before [ 0xFFFFFFFF ]
? called from before [ 0x00000000 ]
}
Call stack V2
{
68C91098: c:\users\олега\documents\visual studio 2015\projects\creatureupgrade\creatureupgrade\dllmain.cpp (99): afterHiring
05250BB3 (?): (?): (?)
0353D76B (HD_SOD: 03500000): (?): (?)
004B0844 (Heroes3: 00400000): (?): (?)
0F896AF9 (patcher_x86: 0F890000): (?): (?)
0050D86D (Heroes3: 00400000): (?): (?)
6F63270C (WINMM: 6F630000): (?): timeGetTime
005517CC (Heroes3: 00400000): (?): (?)
}
Modules
{
0x00400000: Heroes3.exe (size: 0x002CE000, entry point: 0x0061A884) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\Heroes3.exe
0x10000000: _hd3_.dll (size: 0x00048000, entry point: 0x10018C8C) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\_hd3_.dll
0x0F890000: patcher_x86.dll (size: 0x00079000, entry point: 0x0F8A03D3) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\patcher_x86.dll
0x002C0000: smackw32.dll (size: 0x0001B000, entry point: 0x002CC0B0) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\smackw32.dll
0x002E0000: binkw32.dll (size: 0x0002B000, entry point: 0x002F1645) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\binkw32.dll
0x00310000: IFC20.dll (size: 0x00023000, entry point: 0x0031F04E) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\IFC20.dll
0x68BC0000: HD_UPD.dll (size: 0x0003C000, entry point: 0x68BC5405) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\HD_UPD.dll
0x02E40000: HD_MCR.dll (size: 0x002EB000, entry point: 0x02FFE73C) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\HD_MCR.dll
0x03130000: HD_TC2.dll (size: 0x003CD000, entry point: 0x0313BDE0) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\HD_TC2.dll
0x02A40000: HD_SCX2.dll (size: 0x00021000, entry point: 0x02A46346) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\HD_SCX2.dll
0x03500000: HD_SOD.dll (size: 0x010F4000, entry point: 0x035EBF18) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\HD_SOD.dll
0x04940000: HW_SOD.dll (size: 0x00050000, entry point: 0x04971807) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\HW_SOD.dll
0x21100000: Mss32.dll (size: 0x0005F000, entry point: 0x2112F2E5) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\_HD3_Data\Mss32.dll
0x0F2C0000: cursors.dll (size: 0x0004A000, entry point: 0x00000000) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\_HD3_Data\Common\cursors.dll
0x68C90000: CreatureUpgrade.dll (size: 0x00007000, entry point: 0x68C914DA) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\_HD3_Data\Packs\CreatureUpgrade\CreatureUpgrade.dll
0x26F00000: Mp3dec.asi (size: 0x0002A000, entry point: 0x26F0A805) - C:\Program Files (x86)\Heroes of Might and Magic III Complete HD\_HD3_Data\Mp3dec.asi
}