HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > как сделать взрывной арбалет ?
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



Question как сделать взрывной арбалет ?

решил я немного изменить арбалет сделать его взрывным в одиночной игре
получилось но появилась проблема.В мультиплеере после попадания в тело они взрываются а в одиночной они взрываются только в сене после попадания в тело монстра стрелы не взрываются как сделать наоборот чтобы они взрывались ?

Вложение: crossbow.rar (4.2 кб)
Этот файл был скачан 313 раз.

__________________
илья

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

Старое сообщение 01-04-2020 07:49
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



Re: как сделать взрывной арбалет ?

Цитата:
илья2 писал:
решил я немного изменить арбалет сделать его взрывным в одиночной игре
получилось но появилась проблема.В мультиплеере после попадания в тело они взрываются а в одиночной они взрываются только в стене после попадания в тело монстра или игрока стрелы не взрываются как сделать наоборот чтобы они взрывались ?

__________________
илья

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

Старое сообщение 02-04-2020 16:08
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



илья2 выкинь из BoltTouch весь код, кроме вызова ExplodeThink. Там есть условие if (pOther->pev->takedamage), а внутри него ещё условие if ( !g_pGameRules->IsMultiplayer() ). Так вот. Если объект, которого касается болт, может получать урон (первое условие), то болт "убивается" без вызова взрыва, если режим игры одиночный (второе условие). В мультиплеере болт "убивается" через взрыв, а в сингле вот тем вторым условием, чтоб в воздухе не висел.

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

Старое сообщение 02-04-2020 18:47
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



спасибо помогло ты крут.И ещё кое что как изменить скорость выстрела стрелы при прицеливании чтобы как в мультиплеере было ?

__________________
илья

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

Старое сообщение 03-04-2020 08:48
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



илья2 чтобы стрела мгновенно долетала? Ищи второе условие g_pGameRules->IsMultiplayer(). Там есть выбор, как стрелять. Только взрываться болты не будут.

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

Старое сообщение 03-04-2020 08:58
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



блин а мне надо чтобы они взрывались

Добавлено 03-04-2020 в 12:22:

проверил ну как ты и говорил не взрываются

__________________
илья

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

Старое сообщение 03-04-2020 09:22
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



илья2 при мгновенном долёте вообще болт не выстреливается. Делается обычная TraceAttack, типа как при выстреле. А в точке попадания создаётся на стороне клиента темпэнтитя с моделью болта + искры. Создай в точке попадания взрыв, а клиентскую часть с имитацией воткнутого в стену болта убери.

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

Старое сообщение 03-04-2020 09:22
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



поподробнее можно

Добавлено 03-04-2020 в 12:36:

А в точке попадания а где эта точка попадания

__________________
илья

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

Старое сообщение 03-04-2020 09:36
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



илья2 весь код за тебя писать не буду, накидаю примерно серверную часть со взрывом. Клиентскую сам отредактируешь.
void CCrossbow::FireSniperBolt(), там есть условие #ifndef CLIENT_DLL. Замени содержимое условия на это:

C++ Source Code:
1
if (tr.flFraction < 1.0)
2
{
3
  Vector vecEnd = tr.vecEndPos + tr.vecPlaneNormal * 8;
4
 
5
  int iContents = UTIL_PointContents(vecEnd);
6
  int iScale = 10;
7
 
8
  MESSAGE_BEGIN(MSG_PVS, SVC_TEMPENTITY, vecEnd);
9
  WRITE_BYTE(TE_EXPLOSION);
10
  WRITE_COORD(vecEnd.x);
11
  WRITE_COORD(vecEnd.y);
12
  WRITE_COORD(vecEnd.z);
13
  if (iContents != CONTENTS_WATER)
14
  {
15
    WRITE_SHORT(g_sModelIndexFireball);
16
  }
17
  else
18
  {
19
    WRITE_SHORT(g_sModelIndexWExplosion);
20
  }
21
  WRITE_BYTE(iScale); // scale * 10
22
  WRITE_BYTE(15); // framerate
23
  WRITE_BYTE(TE_EXPLFLAG_NONE);
24
  MESSAGE_END();
25
 
26
  ::RadiusDamage(vecEnd, pev, m_pPlayer->pev, pev->dmg, 128, CLASS_NONE, DMG_BLAST | DMG_ALWAYSGIB);
27
}


Добавлено 03-04-2020 в 16:47:

Цитата:
илья2 писал:
А в точке попадания а где эта точка попадания

tr.vecEndPos. vecEnd это tr.vecEndPos + 8 юнитов по нормали, то есть перпендикулярно стене, в которую попали. Этот отступ нужен, чтобы спрайт взрыва не тонул в стене.
Изучай, что такое TraceResult, pmtrace_t, как работают UTIL_TraceLine и PM_PlayerTrace. Документация какая-то должна быть. Ну или статьи на форумах.

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

Старое сообщение 03-04-2020 09:47
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



круто помогло

Добавлено 03-04-2020 в 12:57:

было бы прикольно добавить взрывной лук как из фильма рембо и крутую модель вставить

Добавлено 03-04-2020 в 12:58:

ну это я так фантазия разыгралась

Добавлено 03-04-2020 в 13:03:

если ещё чтонибуть нужно я приду еще раз.

__________________
илья

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

Старое сообщение 03-04-2020 10:03
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Цитата:
илья2 писал:
если ещё чтонибуть нужно я приду еще раз.

Если у тебя есть доступ, почитай раздел "Туториалы". Пригодится.

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

Старое сообщение 03-04-2020 11:16
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



да спасибо почитаю

Добавлено 03-04-2020 в 17:45:

можно я тебе ёще один вопрос спрошу а что это за функция ?

if ( !g_pGameRules->IsMultiplayer() )
{
Killed( pev, GIB_NEVER );
}

__________________
илья

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

Старое сообщение 03-04-2020 14:45
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



g_pGameRules->IsMultiplayer(), говоря простым языком это переменная. Когда она равна 1, то в игре мультиплеер. Когда равна 0, тогда в игре сингл. Восклицательный знак означает логическое отрицание. g_pGameRules->IsMultiplayer() - это мультиплеер. !g_pGameRules->IsMultiplayer() - это ЕСЛИ НЕ мультиплеер. Давай-ка подучи азы языка Си. Выглядеть все эти условия, сравнения и приведения переменных могут по-разному, но базовый набор знаков, которые участвуют в логических операциях везде один. Ну и документацию и туторы по халфе тоже стоит подучить, если хочешь сам писать взрывные луки, не прося ни у кого подсказки.

Добавлено 03-04-2020 в 22:38:

Цитата:
илья2 писал:
можно я тебе ёще один вопрос спрошу а что это за функция

Это условие. ЕСЛИ НЕ мультиплеер, то арбалетный болт убирается, просто исчезает.

Отредактировано Ku2zoff 03-04-2020 в 15:35

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

Старое сообщение 03-04-2020 15:38
- За что?
илья2
Житель форума

Группа: Неопытный
Дата регистрации: Mar 2020
Проживает: Волгоград
Сообщений: 381
Возраст: 22

Рейтинг



а если мультиплеер арбалетный болт появляется да

Добавлено 03-04-2020 в 19:03:

да ты прав но ты не думаешь что эта функция какета не нужная в этой пушке

Добавлено 03-04-2020 в 20:58:

pev->dmg,-что ж ты здесь дамаг та не поставил забыл
надо было так pev->dmg = 40,
а то сижу мучаюсь блин.

__________________
илья

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

Старое сообщение 03-04-2020 17:58
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

Дата регистрации: Apr 2007
Проживает: В Деревне дураков
Сообщений: 6749
Возраст: 33

Рейтинг



Цитата:
илья2 писал:
надо было так pev->dmg = 40,

Немного не доглядел, написал же, что примерно накидаю серверную часть. Поменяй pev->dmg в вызове RadiusDamage на 40. Ну или оставь как есть.

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

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



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


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

Временная зона GMT. Текущее время 14:05. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > как сделать взрывной арбалет ?
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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