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

Дата регистрации: May 2006
Проживает: ㅤ
Сообщений: 5126

Рейтинг



Цитата:
~ X ~ писал:
Почему?

Я отказываюсь отвечать на этот вопрос. Скорее всего после него последует какая-то провакация в мой адрес в виде обвинения меня в упоротости и картинки на пол экрана и кучи смайлов а оно мне надо? Нет не надо.

__________________

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

Старое сообщение 21-11-2014 15:28
- За что?
GioHAUS0n
Житель форума
Девойс

Дата регистрации: Feb 2013
Проживает: N/A
Сообщений: 660

Рейтинг



Цитата:
Cybermax писал:
Потому что в реале даже от одной пули 9мм можно убить особенно в голову.


А это забыл?
http://cs620025.vk.me/v620025081/165cc/IVxkL5bmwPM.jpg

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

Старое сообщение 21-11-2014 16:07
- За что?
Cybermax
Житель форума

Дата регистрации: May 2006
Проживает: ㅤ
Сообщений: 5126

Рейтинг



GioHAUS0n скажи у тебя есть справка из пнд гласящая о том что ты нормальный?

__________________

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

Старое сообщение 22-11-2014 01:06
- За что?
GioHAUS0n
Житель форума
Девойс

Дата регистрации: Feb 2013
Проживает: N/A
Сообщений: 660

Рейтинг



Цитата:
Cybermax писал:
GioHAUS0n скажи у тебя есть справка из пнд гласящая о том что ты нормальный?


- Есть в РесВК и РВК. Может вам сначала провериться, там?
- Это самая безвредная картинка. Вас тошнило или пропал аппетит на рагу?
- Не всегда хотел быть патологоанатомом, но думал об этом. Чтобы быть рядом с реальностью, а не иллюзией или манией величия.

Добавлено 22-11-2014 в 13:48:

- *Приблизительные* последствия в реальности от Gauss-Gun или Lightning-Gun:
http://cs617831.vk.me/v617831887/fdf8/ZCVeJhDtQRo.jpg

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

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

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

Рейтинг



Вот вам ещё одна версия. Эта мне больше нравится. Внимание! Не использует типы пуль, только урон. Типы пуль можно добавить, через них регулировать всякие там "шансы" рикошета, и индивидуальную пробивную силу.

C++ Source Code:
1
Vector CBaseEntity::FireBulletsPlayer(ULONG cShots, Vector vecSrc, Vector vecDirShooting, Vector vecSpread, float flDistance, int iBulletType, int iTracerFreq, int iDamage, entvars_t *pevAttacker, int shared_rand)
2
{
3
  float x, y;
4
 
5
  Vector vecDir;
6
  Vector vecEnd;
7
 
8
  edict_t	*pentIgnore;
9
 
10
  TraceResult tr;
11
 
12
  CBaseEntity *pEntity;
13
 
14
  if (!pevAttacker)
15
    pevAttacker = pev;
16
 
17
  ClearMultiDamage();
18
  gMultiDamage.type = DMG_BULLET | DMG_NEVERGIB;
19
 
20
  for (ULONG iShot = 1; iShot <= cShots; iShot++)
21
  {
22
    x = UTIL_SharedRandomFloat( shared_rand + iShot, -0.5, 0.5 ) + UTIL_SharedRandomFloat( shared_rand + ( 1 + iShot ) , -0.5, 0.5 );
23
    y = UTIL_SharedRandomFloat( shared_rand + ( 2 + iShot ), -0.5, 0.5 ) + UTIL_SharedRandomFloat( shared_rand + ( 3 + iShot ), -0.5, 0.5 );
24
 
25
    vecDir = vecDirShooting + x * vecSpread.x * gpGlobals->v_right + y * vecSpread.y * gpGlobals->v_up;
26
    vecEnd = vecSrc + vecDir * flDistance;
27
 
28
    pentIgnore = ENT(pev);
29
 
30
    UTIL_TraceLine(vecSrc, vecEnd, dont_ignore_monsters, pentIgnore, &tr);
31
 
32
    int m_iDamageSaved = iDamage / 10;
33
 
34
    while (iDamage > m_iDamageSaved)
35
    {
36
      if (tr.flFraction != 1.0)
37
      {
38
        pEntity = CBaseEntity::Instance(tr.pHit);
39
 
40
        pEntity->TraceAttack(pevAttacker, iDamage, vecDir, &tr, DMG_BULLET);
41
        DecalGunshot(&tr, iBulletType);
42
 
43
        float n = -DotProduct(tr.vecPlaneNormal, vecDir);
44
 
45
        if ((pEntity->pev->solid == SOLID_BSP) && (n < 0.5))
46
        {
47
          Vector dirRic = 2.0 * tr.vecPlaneNormal * n + vecDir;
48
          Vector srcRic = tr.vecEndPos + dirRic * 8;
49
          Vector endRic = srcRic + dirRic * flDistance;
50
 
51
          UTIL_Ricochet(srcRic, 1.0);
52
 
53
          if (iShot == 1)
54
          {
55
            if (n == 0) n = 0.1;
56
            iDamage *= (0.65 - n);
57
          }
58
          //					ALERT(at_console, "Damage: %i\n", iDamage);
59
 
60
          vecDir = dirRic;
61
 
62
          pentIgnore = NULL;
63
 
64
          UTIL_TraceLine(srcRic, endRic, dont_ignore_monsters, pentIgnore, &tr);
65
        }
66
        else
67
        {
68
          Vector endPos = tr.vecEndPos;
69
 
70
          UTIL_TraceLine(tr.vecEndPos + vecDir * 8, vecEnd, dont_ignore_monsters, pentIgnore, &tr);
71
 
72
          if (!tr.fAllSolid)
73
          {
74
            UTIL_TraceLine(tr.vecEndPos, endPos, dont_ignore_monsters, pentIgnore, &tr);
75
 
76
            float n = (tr.vecEndPos - endPos).Length();
77
 
78
            if (n > iDamage)
79
              break;
80
 
81
            if (tr.flFraction != 1.0)
82
              DecalGunshot(&tr, iBulletType);
83
 
84
            if (iShot == 1)
85
            {
86
              if (n == 0) n = 1;
87
              iDamage -= n;
88
            }
89
 
90
            UTIL_TraceLine(tr.vecEndPos, vecEnd, dont_ignore_monsters, pentIgnore, &tr);
91
          }
92
        }
93
      }
94
      else
95
        break;
96
 
97
      UTIL_BubbleTrail(vecSrc, tr.vecEndPos, (flDistance * tr.flFraction) / 64.0);
98
    }
99
  }
100
  ApplyMultiDamage(pev, pevAttacker);
101
 
102
  return Vector( x * vecSpread.x, y * vecSpread.y, 0.0 );
103
}


Добавлено 24-11-2014 в 10:49:

Эта реализация, кстати, рикошетит правильно, как гаусс, а так же отнимает правильно урон, только один раз в случае с дробовиком, а не на каждую пульку, как было в предыдущей. Есть один недостаток: эффект рикошета рисуется, и стенка простреливается, когда урон меньше 1/10, но после рикошета и прострела в конце новой трассы не ставится декаль и не наносится урон. Но это легко поправить.

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

Старое сообщение 24-11-2014 04:49
- За что?
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



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


Цитата:
Ku2zoff писал:
правильно, как гаусс

Не забываем, что в гауссе до сих пор официально не исправлена ошибка, которая вызывает self-headshot.

Выглядит, вроде бы, неплохо, но кажется, будто чего-то не хватает... Почему-то у меня этот код раза в четыре длиннее...

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

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

Старое сообщение 24-11-2014 10:53
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Цитата:
~ X ~ писал:
но кажется, будто чего-то не хватает

Да вроде бы всё в норме. Кстати, вылет обнаружился. Уже исправлено. Но сюда не выложу. Кому надо, сами догадаются
Цитата:
~ X ~ писал:
не исправлена ошибка, которая вызывает self-headshot.

а я как раз с ней столкнулся в процессе написания этого кода. Только вот уже не припомню, в каком случае она возникала. То ли при переназначении vecSrc после рикошета, то ли vecDir. Причём застрелиться можно было АБСОЛЮТНО ВСЕГДА, а не так как с гауссом, при выстреле под 90 градусов в глухую стенку.

Добавлено 24-11-2014 в 20:09:

Цитата:
~ X ~ писал:
Не забываем, что в гауссе до сих пор официально не исправлена ошибка

Опять всплыло, кстати. Беспорядочные какие-то рикошеты появились. То рикошетит в ту же точку, куда попало первый раз, то в игрока. А почему это возникает? Я заметил, что всегда проявляется в каком-то определённом месте на карте, при попадании в определённую стенку под определённым углом.

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

Старое сообщение 24-11-2014 14:09
- За что?
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



Проще это написать рекурсивно, а потом, при желании, переделать на стэк

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

Старое сообщение 24-11-2014 18:30
- За что?
Ku2zoff
Мастер Ёда из Деревни Дуракоф

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

Рейтинг



Ещё раз переписал, избавился от одной неприятной вещи, когда при простреле сам прострел не делался, а новая трасса попадала в первую точку попадания (всегда проявляется в каком-то определённом месте на карте, при попадании в определённую стенку под определённым углом), и получалось, что один выстрел наносил урона раз в 20-30 больше положенного. Избавился от селф-хедшота, правда рикошеты теперь не как у гаусса, а строго под 90 градусов от первоначальной трассы. Ну может оно и к лучшему, можно стрелять за угол

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

Старое сообщение 24-11-2014 20:26
- За что?
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



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


Цитата:
Ku2zoff писал:
Ещё раз переписал

я же говорил...

Нипынимаю, что такого страшного в рикошетах? Вот передавать их и синхронизировать по сети - да...

Добавлено 25-11-2014 в 15:38:

Кстати, о нехватании. Для затравки: какой может быть рикошет от matGrass, matWood, matFlesh? как оно поведёт себя на картах с 3d sky?
Вариантов массы

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

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

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



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


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

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

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

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

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

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