HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Как заставить HECU следовать за игроком?
как заставить других монстров помимо ученых и барни следовать за игроком?
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
zombiman
Новичок

Дата регистрации: Dec 2021
Проживает: Неа
Сообщений: 2

Рейтинг



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
};


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

Сообщить модератору | | IP: Записан
Сообщение: 206331

Старое сообщение 01-01-2022 11:50
- За что?
FreeSlave
Житель форума

Дата регистрации: Nov 2007
Проживает: Тула
Сообщений: 1077

Рейтинг



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

Сообщить модератору | | IP: Записан
Сообщение: 206332

Старое сообщение 01-01-2022 12:30
- За что?
zombiman
Новичок

Дата регистрации: Dec 2021
Проживает: Неа
Сообщений: 2

Рейтинг



Цитата:
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

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


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

Сообщить модератору | | IP: Записан
Сообщение: 206333

Старое сообщение 01-01-2022 15:46
- За что?
Sigurth
Частый гость

Дата регистрации: May 2015
Проживает: Красноярск
Сообщений: 95
Возраст: 27

Рейтинг



Если не можешь разобраться, то лучше всего сделай наоборот. Возьми за основу код барника, и на него уже накладывай необходимые для грантов поведения. Потому что тебе в любом случае придется вырезать некоторые вещи, завязанные на их принадлежности к CSquadMonster. По факту нужно лишь сделать скедьюлы и таски для обычной атаки, как у барника, только для автомата и дробовика, да броски гранат. Потом, когда разберешься получше, можешь попробовать немного улучшить их поведение.

__________________
Никогда не поздно сделать мод под хл1

Сообщить модератору | | IP: Записан
Сообщение: 206745

Старое сообщение 26-01-2022 04:33
- За что?
Shadow762
быдлокодер

Дата регистрации: Jul 2015
Проживает: Гиде-то
Сообщений: 71
Возраст: 26

Рейтинг



zombiman посмотри исходники Raven City
там реализованы дружественные гранты из опфора.
https://github.com/HLSources/Raven-City
и еще много чего, правда не столь идеально, но сгодится.

__________________
я Z

Сообщить модератору | | IP: Записан
Сообщение: 207083

Старое сообщение 10-02-2022 04:55
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 01:31. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Как заставить HECU следовать за игроком?
как заставить других монстров помимо ученых и барни следовать за игроком?
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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