HLFX.Ru Forum
Показать все 5 сообщений этой темы на одной странице

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:

Question Как заставить HECU следовать за игроком?

И так здравствуйте, У меня возникла такая проблема. Я скопипастил файл хекушника, поменял в нем все что нужно, ну и сделал ему френдли класс.
Все получилось нормально, солдат получился добряш милаш и с игроком теперь дружит. Но вот на моменте, когда надо было заставить его следовать за игроком, все застопорилось. Я честно пытался гуглить и даже на этом форуме искал, но ничего на эту тему не нашел.

Я пытался банально скопировать вот этот код с Барни (там где надо переименовал):

C++ Source Code:
1
Task_t tlBaFollow[] =
2
{
3
  {TASK_MOVE_TO_TARGET_RANGE, (float)128}, // Move within 128 of target ent (client)
4
  {TASK_SET_SCHEDULE, (float)SCHED_TARGET_FACE},
5
};
6
 
7
Schedule_t slBaFollow[] =
8
{
9
  {tlBaFollow,
10
  ARRAYSIZE(tlBaFollow),
11
  bits_COND_NEW_ENEMY |
12
  bits_COND_LIGHT_DAMAGE |
13
  bits_COND_HEAVY_DAMAGE |
14
  bits_COND_HEAR_SOUND |
15
  bits_COND_PROVOKED,
16
  bits_SOUND_DANGER,
17
  "Follow"},
18
};


Ну и соответственно солдату в конец Define_custom_shedules добавил:


C++ Source Code:
1
DEFINE_CUSTOM_SCHEDULES(CFHGrunt){
2
  slFGruntFail,
3
  slFGruntCombatFail,
4
  slFGruntVictoryDance,
5
  slFGruntEstablishLineOfFire,
6
  slFGruntFoundEnemy,
7
  slFGruntCombatFace,
8
  slFGruntSignalSuppress,
9
  slFGruntSuppress,
10
  slFGruntWaitInCover,
11
  slFGruntTakeCover,
12
  slFGruntGrenadeCover,
13
  slFGruntTossGrenadeCover,
14
  slFGruntTakeCoverFromBestSound,
15
  slFGruntHideReload,
16
  slFGruntSweep,
17
  slFGruntRangeAttack1A,
18
  slFGruntRangeAttack1B,
19
  slFGruntRangeAttack2,
20
  slfgFollow,
21
 
22
 
23
};


Но почему то он он упорно не желает ходить за игроком.


Отправлено 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:

Цитата:
FreeSlave писал:
Просто добавить описание 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

Для своих целей я вообще сделал отдельный класс, в котором сосредоточил всё поведение связанное со следованием за игроком, и от него уже наследовал и солдат и вортигонтов и кого только душе угодно.



Хм, идея с классом звучит разумно. Думаю, я могу попробовать безболезненно скопипастить в него код из squadmonster и talkmonster.

Добавлено 01-01-2022 в 18:46:

Цитата:
FreeSlave писал:
Просто добавить описание 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

Для своих целей я вообще сделал отдельный класс, в котором сосредоточил всё поведение связанное со следованием за игроком, и от него уже наследовал и солдат и вортигонтов и кого только душе угодно.


Короче идея с классом у меня не вышла... Мне пока мозгов не хватает на что то настолько масштабное.


Отправлено 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


Временная зона GMT. Текущее время 18:12.
Показать все 5 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024