HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Re-spawning monsters in HL multiplayer?
Question on making the monsters re-spawn in multiplayer?
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Napoleon321
Admiral

Дата регистрации: Jan 2017
Проживает: Sofia
Сообщений: 57
Возраст: 34

Рейтинг



Half-Life Re-spawning monsters in HL multiplayer?

Hello Team!

I know we have some awesome coders in this community, and I was wondering can someone give me a heads up at my struggle?

I'm trying to make a re-spawn functions for the monsters in Half-Life. The basic idea is simple and it has being implemented in some mods, unfortunately none of them are open sourced, and with no reference... I'm sort of in the dark.

I have a code for giving players points for killing monsters, different amount based on the monster killed, and I wanted to have the monsters re-spawn after some time after being killed.

Do you know of any good example I could use? Or maybe you know of a tutorial I probably missed?

Your comments and feedback will be greatly appreciated.

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

Старое сообщение 28-10-2019 17:36
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


What type of respawn do you want to implement? Player-like (leave corpse and re-create monster) or resurrection-like (dead monster gets up)?

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

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

Старое сообщение 28-10-2019 17:44
-
Napoleon321
Admiral

Дата регистрации: Jan 2017
Проживает: Sofia
Сообщений: 57
Возраст: 34

Рейтинг



Leave corpse (or gibs) and re-create monster.

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

Старое сообщение 28-10-2019 19:09
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Then I suggest to start with something like this.
1) Remember the initial origin and angles of the monster in its Spawn() function:

C++ Source Code:
m_vecSpawnOrigin = pev->origin;
m_vecSpawnAngles = pev->angles;

2) In TASK_DIE handler, replace:
C++ Source Code:
1
if ( ShouldFadeOnDeath() )
2
{
3
  // this monster was created by a monstermaker... fade the corpse out.
4
  SUB_StartFadeOut();
5
}
6
else
7
{
8
  // body is gonna be around for a while, so have it stink for a bit.
9
  CSoundEnt::InsertSound ( bits_SOUND_CARCASS, pev->origin, 384, 30 );
10
}

with:
C++ Source Code:
CBaseEntity::Create( pev->classname, m_vecSpawnOrigin,m_vecSpawnAngles , pev->owner );
SUB_StartFadeOut();

This will immediately respawn the monster at the original position, and fade out the corpse to eventually free up an edict (otherwise, you'll run out of them).
You can also add a check for multiplayer or gamerules (g_pGamerules->IsMultiplayer() or custom), and make a respawn delay by moving this code to a separate exported think function and using SetThink() with pev->nextthink with the respawn delay.
HtH.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

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

Старое сообщение 29-10-2019 05:55
-
FreeSlave
Житель форума

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

Рейтинг



Цитата:
Napoleon321 писал:
The basic idea is simple and it has being implemented in some mods


What mods are you referring to? Maybe they just use monstermaker with infinite monster count and max living monsters set to 1?

XaeroX, I think this method will work only for non-gibbed monsters, since gibbing deletes the entity. Also this does not preserve special monsters settings (like weapons, spawnflags, etc.).

__________________
I'm on github
I'm on opendesktop.org

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

Старое сообщение 29-10-2019 09:02
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
FreeSlave писал:
will work only for non-gibbed monsters, since gibbing deletes the entity

If TASK_DIE is not run on gibbage, then one should tackle that by adding the monster creation code to the other place, e.g. to GibMonster().
Цитата:
FreeSlave писал:
Also this does not preserve special monsters settings (like weapons, spawnflags, etc.).

Yes, they should be copied in the same way as origin and angles.
That's why I wrote "to start with".

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

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

Старое сообщение 29-10-2019 09:16
-
Napoleon321
Admiral

Дата регистрации: Jan 2017
Проживает: Sofia
Сообщений: 57
Возраст: 34

Рейтинг



Thank you for all the feedback.

FreeSlave, I'm referring to Scientist Hunt, I'm sure for this one it's not the monster make thing... since the barney re-spawns on crossfire... and he\s not made with monster-maker there.

Back on the topic or the code: I presume a similar thing is done for the re-spawning of the weapons and the ammo items... still I was not able to completely grasp the concept.

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

Старое сообщение 29-10-2019 17:06
- За что?
JPEG
Житель форума

Дата регистрации: Sep 2013
Проживает: рф
Сообщений: 659

Рейтинг



mostermaker? entity

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))

перехожу на другой двиг

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

Старое сообщение 12-11-2019 18:54
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 15:48. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Re-spawning monsters in HL multiplayer?
Question on making the monsters re-spawn in multiplayer?
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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