HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Как заставить HECU следовать за игроком? (https://hlfx.ru/forum/showthread.php?threadid=5772)
Отправлено zombiman 01-01-2022 в 11:50:
Как заставить HECU следовать за игроком?
И так здравствуйте, У меня возникла такая проблема. Я скопипастил файл хекушника, поменял в нем все что нужно, ну и сделал ему френдли класс.
Все получилось нормально, солдат получился добряш милаш и с игроком теперь дружит. Но вот на моменте, когда надо было заставить его следовать за игроком, все застопорилось. Я честно пытался гуглить и даже на этом форуме искал, но ничего на эту тему не нашел.
Я пытался банально скопировать вот этот код с Барни (там где надо переименовал):
C++ Source Code:
3 | {TASK_MOVE_TO_TARGET_RANGE, (float)128}, // Move within 128 of target ent (client) |
4 | {TASK_SET_SCHEDULE, (float)SCHED_TARGET_FACE}, |
7 | Schedule_t slBaFollow[] = |
10 | ARRAYSIZE(tlBaFollow), |
12 | bits_COND_LIGHT_DAMAGE | |
13 | bits_COND_HEAVY_DAMAGE | |
14 | bits_COND_HEAR_SOUND | |
Ну и соответственно солдату в конец Define_custom_shedules добавил:
C++ Source Code:
1 | DEFINE_CUSTOM_SCHEDULES(CFHGrunt){ |
5 | slFGruntEstablishLineOfFire, |
8 | slFGruntSignalSuppress, |
13 | slFGruntTossGrenadeCover, |
14 | slFGruntTakeCoverFromBestSound, |
17 | slFGruntRangeAttack1A, |
18 | slFGruntRangeAttack1B, |
Но почему то он он упорно не желает ходить за игроком.
Отправлено FreeSlave 01-01-2022 в 12:30:
Просто добавить описание schedule недостаточно. Нужно сделать несколько вещей.
Выставить FolloweUse как у барни https://github.com/ValveSoftware/ha...barney.cpp#L427
Сама функция принадлежит классу CTalkMonster - https://github.com/ValveSoftware/ha...nster.cpp#L1416
Но солдаты наследуют CSquadMonster. Можешь попробовать наследовать класс своих солдат от CTalkMonster.
Потом нужно не забыть возвращать нужные schedule из GetScheduleOfType как у барника: https://github.com/ValveSoftware/ha...barney.cpp#L649 и https://github.com/ValveSoftware/ha...barney.cpp#L659
И проверять, что монстр следует за игроком в GetSchedule https://github.com/ValveSoftware/ha...barney.cpp#L733
Для своих целей я вообще сделал отдельный класс, в котором сосредоточил всё поведение связанное со следованием за игроком, и от него уже наследовал и солдат и вортигонтов и кого только душе угодно.
__________________
I'm on github
I'm on opendesktop.org
Отправлено zombiman 01-01-2022 в 15:46:
Цитата:
Хм, идея с классом звучит разумно. Думаю, я могу попробовать безболезненно скопипастить в него код из squadmonster и talkmonster.
Добавлено 01-01-2022 в 18:46:
Цитата:
Короче идея с классом у меня не вышла... Мне пока мозгов не хватает на что то настолько масштабное.
Отправлено Sigurth 26-01-2022 в 04:33:
Если не можешь разобраться, то лучше всего сделай наоборот. Возьми за основу код барника, и на него уже накладывай необходимые для грантов поведения. Потому что тебе в любом случае придется вырезать некоторые вещи, завязанные на их принадлежности к CSquadMonster. По факту нужно лишь сделать скедьюлы и таски для обычной атаки, как у барника, только для автомата и дробовика, да броски гранат. Потом, когда разберешься получше, можешь попробовать немного улучшить их поведение.
__________________
Никогда не поздно сделать мод под хл1
Отправлено Shadow762 10-02-2022 в 04:55:
zombiman посмотри исходники Raven City
там реализованы дружественные гранты из опфора.
https://github.com/HLSources/Raven-City
и еще много чего, правда не столь идеально, но сгодится.
__________________
Fight for Peace, Fight for Love