При хостинг поддержке Интернет-сообщества VBIOS CS-Mapping.com.ua
Вернуться   CS-Mapping.com.ua > Forum > Разработка игр > Кодинг > Кодинг для Half-Life 1
Ник
Пароль
Регистрация Правила форума FAQ Пользователи Администрация Календарь Поиск За 24 часа Пометить все разделы прочитанными

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.05.2016, 19:32  #1
TEPA6ANT
TEPA6ANT
Рядовой
Регистрация: 11.03.2015
Возраст: 24
Сообщения: 13


По умолчанию Взрывные пули

Как сделать такие пули, которые после столкновения с брашом (или с монстром и с игроком, если возможно) создают маленький взрыв, как арбалет в режиме по сети, но не дротики, а обычные пули, как у обычных оружий.

Последний раз редактировалось TEPA6ANT, 24.05.2016 в 19:37.
TEPA6ANT вне форума Ответить с цитированием
Старый 24.05.2016, 21:29  #2
MaSTeR
MaSTeR
Лейтенант
Регистрация: 15.04.2009
Возраст: 27
Сообщения: 793


По умолчанию

2 TEPA6ANT:
Послать трассирующий луч вперёд с началом в точке выстрела и произвести небольшой взрыв там, где луч столкнется с препятствием.
MaSTeR вне форума Ответить с цитированием
Старый 24.05.2016, 23:40  #3
ILZM
ILZM
3 в 1
Регистрация: 28.03.2011
Адрес: Mega City One
Сообщения: 508


По умолчанию

В combat.cpp на сервере вставь это в функцию void CBaseEntity::FireBullets перед строчкой UTIL_BubbleTrail
В XashXT работает, а у тебя наверное хл. Там, думаю, мало различий
Код:
MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, tr.vecEndPos );
WRITE_BYTE( TE_EXPLOSION);		
WRITE_COORD( tr.vecEndPos.x );
WRITE_COORD( tr.vecEndPos.y );
WRITE_COORD( tr.vecEndPos.z );
if (UTIL_PointContents( tr.vecEndPos ) != CONTENTS_WATER)
{
	WRITE_SHORT( g_sModelIndexFireball );
}
else
{
	WRITE_SHORT( g_sModelIndexWExplosion );
}
WRITE_BYTE( 10  ); // scale * 10
WRITE_BYTE( 15  ); // framerate
WRITE_BYTE( TE_EXPLFLAG_NONE );
MESSAGE_END();

::RadiusDamage( tr.vecEndPos, pevAttacker, NULL, 10, 128, CLASS_NONE, DMG_BLAST|DMG_ALWAYSGIB );

В сообщении 10 - размер спрайта, 15 - скорость спрайта.

У RadiusDamage 10 - это макс. урон, 128 - радиус поиска. По-своему желанию можно запилить зависимость всего этого от типа пули(прям сверху куда ты вставил стоит switch). Кстати, работает не только у игрока, но и у всяких NPC с огнестрелом

Я вот не знаю поляжет ли сервер при очень большом количестве игроков. За один выстрел посылается 3 сообщения, хотя их можно было бы запаковать в одно(Привет, XWider).

Оффтоп
ILZM вне форума Ответить с цитированием
Старый 25.05.2016, 05:51  #4
TEPA6ANT
TEPA6ANT
Рядовой
Регистрация: 11.03.2015
Возраст: 24
Сообщения: 13


По умолчанию

2 ILZM:
Спасибо огромное

Последний раз редактировалось TEPA6ANT, 25.05.2016 в 05:54.
TEPA6ANT вне форума Ответить с цитированием
Старый 26.05.2016, 00:36  #5
gfdjr5
gfdjr5
[NULL]
Регистрация: 25.11.2012
Сообщения: 563


По умолчанию

[ Цитата ] Сообщение от ILZM: Я вот не знаю поляжет ли сервер при очень большом количестве игроков. За один выстрел посылается 3 сообщения, хотя их можно было бы запаковать в одно(Привет, XWider).

Скорее клиенты начнут отваливаться от забитого канала + flushpacket
[ Цитата ] Сообщение от ILZMO: И еще немного индусского кодинга, надеюсь не от ДМ
И не надейся
[ Цитата ] Сообщение от ILZM:
Код:
entvars_t *pevOwner;

if ( pev->owner )
	pevOwner = VARS( pev->owner );
else
	pevOwner = NULL;

pev->owner = NULL; // can't traceline attack owner if this is set

::RadiusDamage( GetAbsOrigin(), pev, pevOwner, pev->dmg, 128, CLASS_NONE, DMG_BLAST|DMG_ALWAYSGIB );

pevOwner можно было сразу выставить в NULL
gfdjr5 вне форума Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 00:06.


Designed by FT-502, [email protected] Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2021 by CS-Mapping.com.ua Community