(11.02.2023 02:07)Archer30 Wrote: Hi, I wonder if it is true that UN:U does not work for heroes
Перед вызовом отключаешь функцию-фильтр на героев на карте:
Code:
_Hero_ *GetHeroOrBoat(_MapItem_ *mip)
{
STARTNA(__LINE__, 0)
if (mip->OType == 0x22) RETURN(GetHeroStr(mip->SetUp)); // герой
if (mip->OType == 8) RETURN((_Hero_*)GetBoatStr(mip->SetUp)); // лодка
RETURN(0)
}
Тогда функция проверки типов объектов на карте станет их учитывать, но объекты, на которых стоят герои, учитываться перестанут и при поиске других объектов вылезет куча ошибок. Поэтому героев на карте стоит искать всё же через перебор активных героев у 8 игроков. Алгоритм не сложный: узнаёшь количество героев у игрока, получаешь их структуры, смотришь флаг присутствия на карте у каждого, если флаг 1, то далее смотришь флаг нахождения героя в каком-то объекте, если герой в объекте, то считываешь dword с координатами, расжимаешь их битовым сдвигом, если не в объекте - считываешь стандартные координаты из структуры героя. Далее - зависит от того, что ты хочешь сделать с полученным героем по координатам.