HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Bullet penetration
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
daku
Частый гость

Дата регистрации: Oct 2011
Проживает: (void)
Сообщений: 93

Рейтинг



Bullet penetration

Hello

in cs 1.6 weapons can inflict damage through walls, my question is this
how can I do this penetration for weapons?

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

Старое сообщение 18-12-2011 13:18
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32292
Нанёс повреждений: 392 ед.

Рейтинг



Look gauss code for example

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 18-12-2011 13:33
-
daku
Частый гость

Дата регистрации: Oct 2011
Проживает: (void)
Сообщений: 93

Рейтинг



i don't see anything there ...

ev_hldm.cpp and gauss.cpp

or maybe this is it

C++ Source Code:
1
if ( pEntity->solid == SOLID_BSP )
2
{
3
  float n;
4
 
5
  pentIgnore = NULL;
6
 
7
  n = -DotProduct( tr.plane.normal, forward );
8
 
9
  if (n < 0.5) // 60 degrees
10
  {
11
    // ALERT( at_console, "reflect %f\n", n );
12
    // reflect
13
    vec3_t r;
14
 
15
    VectorMA( forward, 2.0 * n, tr.plane.normal, r );
16
 
17
    flMaxFrac = flMaxFrac - tr.fraction;
18
 
19
    VectorCopy( r, forward );
20
 
21
    VectorMA( tr.endpos, 8.0, forward, vecSrc );
22
    VectorMA( vecSrc, 8192.0, forward, vecDest );
23
 
24
    gEngfuncs.pEfxAPI->R_TempSprite( tr.endpos, vec3_origin, 0.2, m_iGlow, kRenderGlow, kRenderFxNoDissipation, flDamage * n / 255.0, flDamage * n * 0.5 * 0.1, FTENT_FADEOUT );
25
 
26
    vec3_t fwd;
27
    VectorAdd( tr.endpos, tr.plane.normal, fwd );
28
 
29
    gEngfuncs.pEfxAPI->R_Sprite_Trail( TE_SPRITETRAIL, tr.endpos, fwd, m_iBalls, 3, 0.1, gEngfuncs.pfnRandomFloat( 10, 20 ) / 100.0, 100,
30
    255, 100 );
31
 
32
    // lose energy
33
    if ( n == 0 )
34
    {
35
      n = 0.1;
36
    }
37
 
38
    flDamage = flDamage * (1 - n);
39
 
40
  }
41
  else
42
  {
43
    // tunnel
44
    EV_HLDM_DecalGunshot( &tr, BULLET_MONSTER_12MM );
45
 
46
    gEngfuncs.pEfxAPI->R_TempSprite( tr.endpos, vec3_origin, 1.0, m_iGlow, kRenderGlow, kRenderFxNoDissipation, flDamage / 255.0, 6.0, FTENT_FADEOUT );
47
 
48
    // limit it to one hole punch
49
    if (fHasPunched)
50
    {
51
      break;
52
    }
53
    fHasPunched = 1;
54
 
55
    // try punching through wall if secondary attack (primary is incapable of breaking through)
56
    if ( !m_fPrimaryFire )
57
    {
58
      vec3_t start;
59
 
60
      VectorMA( tr.endpos, 8.0, forward, start );
61
 
62
      // Store off the old count
63
      gEngfuncs.pEventAPI->EV_PushPMStates();
64
 
65
      // Now add in all of the players.
66
      gEngfuncs.pEventAPI->EV_SetSolidPlayers ( idx - 1 );
67
 
68
      gEngfuncs.pEventAPI->EV_SetTraceHull( 2 );
69
      gEngfuncs.pEventAPI->EV_PlayerTrace( start, vecDest, PM_STUDIO_BOX, -1, &beam_tr );
70
 
71
      if ( !beam_tr.allsolid )
72
      {
73
        vec3_t delta;
74
        float n;
75
 
76
        // trace backwards to find exit point
77
 
78
        gEngfuncs.pEventAPI->EV_PlayerTrace( beam_tr.endpos, tr.endpos, PM_STUDIO_BOX, -1, &beam_tr );
79
 
80
        VectorSubtract( beam_tr.endpos, tr.endpos, delta );
81
 
82
        n = Length( delta );
83
 
84
        if (n < flDamage)
85
        {
86
          if (n == 0)
87
            n = 1;
88
          flDamage -= n;
89
 
90
          // absorption balls
91
          {
92
            vec3_t fwd;
93
            VectorSubtract( tr.endpos, forward, fwd );
94
            gEngfuncs.pEfxAPI->R_Sprite_Trail( TE_SPRITETRAIL, tr.endpos, fwd, m_iBalls, 3, 0.1, gEngfuncs.pfnRandomFloat( 10, 20 ) / 100.0, 100,
95
            255, 100 );
96
          }
97
 
98
          //////////////////////////////////// WHAT TO DO HERE
99
          // CSoundEnt::InsertSound ( bits_SOUND_COMBAT, pev->origin, NORMAL_EXPLOSION_VOLUME, 3.0 );
100
 
101
          EV_HLDM_DecalGunshot( &beam_tr, BULLET_MONSTER_12MM );
102
 
103
          gEngfuncs.pEfxAPI->R_TempSprite( beam_tr.endpos, vec3_origin, 0.1, m_iGlow, kRenderGlow, kRenderFxNoDissipation, flDamage / 255.0, 6.0, FTENT_FADEOUT );
104
 
105
          // balls
106
          {
107
            vec3_t fwd;
108
            VectorSubtract( beam_tr.endpos, forward, fwd );
109
            gEngfuncs.pEfxAPI->R_Sprite_Trail( TE_SPRITETRAIL, beam_tr.endpos, fwd, m_iBalls, (int)(flDamage * 0.3), 0.1, gEngfuncs.pfnRandomFloat( 10, 20 ) / 100.0, 200,
110
            255, 40 );
111
          }
112
 
113
          VectorAdd( beam_tr.endpos, forward, vecSrc );
114
        }
115
      }
116
      else
117
      {
118
        flDamage = 0;
119
      }
120
 
121
      gEngfuncs.pEventAPI->EV_PopPMStates();
122
    }
123
    else
124
    {
125
      if ( m_fPrimaryFire )
126
      {
127
        // slug doesn't punch through ever with primary
128
        // fire, so leave a little glowy bit and make some balls
129
        gEngfuncs.pEfxAPI->R_TempSprite( tr.endpos, vec3_origin, 0.2, m_iGlow, kRenderGlow, kRenderFxNoDissipation, 200.0 / 255.0, 0.3, FTENT_FADEOUT );
130
 
131
        {
132
          vec3_t fwd;
133
          VectorAdd( tr.endpos, tr.plane.normal, fwd );
134
          gEngfuncs.pEfxAPI->R_Sprite_Trail( TE_SPRITETRAIL, tr.endpos, fwd, m_iBalls, 8, 0.6, gEngfuncs.pfnRandomFloat( 10, 20 ) / 100.0, 100,
135
          255, 200 );
136
        }
137
      }
138
 
139
      flDamage = 0;
140
    }
141
  }
142
}
143
else
144
{
145
  VectorAdd( tr.endpos, forward, vecSrc );
146
}

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

Старое сообщение 18-12-2011 14:06
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32292
Нанёс повреждений: 392 ед.

Рейтинг



C++ Source Code:
1
gEngfuncs.pEventAPI->EV_PlayerTrace( beam_tr.endpos, tr.endpos, PM_STUDIO_BOX, -1, &beam_tr );
2
 
3
VectorSubtract( beam_tr.endpos, tr.endpos, delta );
4
 
5
n = Length( delta );

Backward trace the wall to find him thickness.
Then
C++ Source Code:
if (n < flDamage)

Thickness less than damage! We can shoot through this wall.
C++ Source Code:
flDamage -= n;

Lose damage on penetration.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

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

Старое сообщение 18-12-2011 14:16
-
daku
Частый гость

Дата регистрации: Oct 2011
Проживает: (void)
Сообщений: 93

Рейтинг



big Thanks

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

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



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


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

Временная зона GMT. Текущее время 23:34. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Bullet penetration
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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