Quote:Пока что единственное решение вышеупомянутого бага в Тифоне - убирать данный перехват для восстановления показов ресурса в окне найма, больше ничего найти не удалось. Оригинальная функция по номеру монстра берёт из структуры стоимость ресурса
Уже теплее.
Как я понял, Тифон структуру с информацией о монстрах расширил. Всё, что нужно сделать, это один раз вызвать функцию из era.dll: RedirectMemoryBlock(7D0C90, старый размер массива с инфой о монстрах, новый адрес массива).
MonTable rb sizeof._Creature_*MonNum; структура существ (главная)
Вот эта таблица в тифоне.
В самом же коде Тифона MOP импортирует много функций.
data import
; Импортируемые процедуры
library kernel32,'kernel32.dll'
import kernel32,\
CreateFileA,'CreateFileA',\
GetFileSize, 'GetFileSize',\
VirtualAlloc, 'VirtualAlloc',\
ReadFile, 'ReadFile',\
CloseHandle, 'CloseHandle',\
VirtualFree, 'VirtualFree',\
WriteFile, 'WriteFile'
end data
Точно также можно импортировать из Эры несколько функций.
Попробуй
library era, 'era.dll'
import era, RegisterHandler, 'RegisterHandler', RedirectMemoryBlock, 'RedirectMemoryBlock'
А в functions.asm в ; ГЛАВНАЯ ПРОЦЕДУРА
нужно будет сделать так:
; Уведомляем Эру о том, что таблица существ перенесена
push MonTable
push sizeof._Creature_*197
push 7D0C90
call RedirectMemoryBlock
; Вместо хука на ProcessErm нужно подписаться на событие, но это уже позже, давай для начала с этим багом разберёмся.