HLFX.Ru Forum
Показать все 10 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Подключение проекционного фонарика (https://hlfx.ru/forum/showthread.php?threadid=4193)


Отправлено master07 03-12-2013 в 10:35:

Подключение проекционного фонарика

Вот недавно снёс из паранойи код фонарика и исправил ошибки. Но вот я не знаю как подключить чтобы не было трудностей, вот сам код:

В ev_hldm.cpp добавил:

C++ Source Code:
1
DynamicLight *MY_AllocDlight (int key)
2
{
3
  int		i;
4
  DynamicLight	*dl;
5
  float time = gEngfuncs.GetClientTime();
6
 
7
  if (key)
8
  {
9
    dl = cl_dlights;
10
    for (i=0 ; i<MAX_DLIGHTS ; i++, dl++)
11
    {
12
      if (dl->key == key)
13
      {
14
        memset (dl, 0, sizeof(*dl));
15
        dl->key = key;
16
        return dl;
17
      }
18
    }
19
  }
20
  dl = cl_dlights;
21
  for (i=0 ; i<MAX_DLIGHTS ; i++, dl++)
22
  {
23
    if (dl->die < time)
24
    {
25
      memset (dl, 0, sizeof(*dl));
26
      dl->key = key;
27
      return dl;
28
    }
29
  }
30
 
31
  dl = &cl_dlights[0];
32
  memset (dl, 0, sizeof(*dl));
33
  dl->key = key;
34
  return dl;
35
}


И в конец:

C++ Source Code:
1
void SetupFlashlight(vec3_t origin, vec3_t angles, float time, float frametime)
2
{
3
  if (!g_flashlight)
4
    return;
5
 
6
  static float add = 0;
7
  float addideal = 0;
8
  pmtrace_t tr;
9
  vec3_t fwd, right, up;
10
  AngleVectors(angles, fwd, right, up);
11
  fwd = origin + (fwd*150);
12
  gEngfuncs.pEventAPI->EV_SetTraceHull( 2 );
13
  gEngfuncs.pEventAPI->EV_PlayerTrace( origin, fwd, PM_NORMAL, -1, &tr );
14
  if (tr.fraction < 1.0)
15
    addideal = (1 - tr.fraction)*30;
16
  float speed = (add - addideal)*10;
17
  if (speed < 0) speed *= -1;
18
  if (add < addideal)
19
  {
20
    add += frametime*speed;
21
    if (add > addideal) add = addideal;
22
  }
23
  else if (add > addideal)
24
  {
25
    add -= frametime*speed;
26
    if (add < addideal) add = addideal;
27
  }
28
 
29
  DynamicLight *flashlight = MY_AllocDlight(-666);
30
  flashlight->origin = origin + Vector(0,0,-13) + (right*5);
31
  flashlight->radius = 700;
32
  flashlight->die = time + 0.01;
33
  flashlight->angles = angles;
34
  strcpy(flashlight->spot_texture, "gfx/flashlight.tga");
35
  flashlight->cone_hor = 50+add;
36
  flashlight->cone_ver = 50+add;
37
  flashlight->color = Vector(1.4, 1.4, 1.4);
38
}


В ev_hldm.h в конец:

C++ Source Code:
1
void SetupFlashlight(vec3_t origin, vec3_t angles, float time, float frametime);
2
 
3
struct DynamicLight
4
{
5
  vec3_t	origin;
6
  float	radius;
7
  vec3_t	color;
8
  float	die;
9
  float	decay;
10
  int		key;
11
 
12
// spotlight specific:
13
  vec3_t	angles;
14
  float	cone_hor;
15
  float	cone_ver;
16
  char	spot_texture[64];
17
};
18
 
19
DynamicLight* MY_AllocDlight (int key);
20
 
21
#define MAX_DLIGHTS 32
22
DynamicLight cl_dlights[MAX_DLIGHTS];
23
 
24
int g_flashlight;
25
 


Вот и всё проверил ошибок не было, а в игре нет никакого фонарика, потому что я знаю что нужно его подключить, но не знаю как. Помогите пожалуйста. Заранее благодарен.


Отправлено Дядя Миша 03-12-2013 в 12:29:

Цитата:
master07 писал:
Вот недавно снёс из паранойи код фонарика и исправил ошибки

Чего-чего сделал?

__________________
My Projects: download page

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

Цитата:

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


Отправлено master07 03-12-2013 в 12:51:

Что именно. Я когда снёс всё то, что нужно при компиляции возникали ошибки.


Отправлено Chyvachok 03-12-2013 в 15:07:

Цитата:
master07 писал:
Подключение проекционного фонарика


Прочитал случайно как провокационного фонарика.

А то теме может стоит написать что за ошибки были?


Отправлено fire64 03-12-2013 в 15:40:

master07, а ты в курсе, что в паранойе свой рендер?

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено Дядя Миша 03-12-2013 в 15:51:

Цитата:
master07 писал:
Что именно. Я когда снёс всё то, что нужно при компиляции возникали ошибки.

Снести можно яйцо, если ты курица.
Снести можно несущую перегородку, если ты равшан или джамшут.
Что ты там в коде снёс - непонятно.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Ku2zoff 03-12-2013 в 16:07:

Может не снёс, а перенёс? В чистый СДК. Маленький кусок кода без остального рендера. Естественно работать не будет.

Добавлено 03-12-2013 в 23:07:

Цитата:
master07 писал:
C++ Source Code:
DynamicLight cl_dlights[MAX_DLIGHTS];
Эти длайты надо ещё где-то в коде "менеджить" и отрисовывать вообще-то. Что толку от того, что они просто так есть и создаются в функции MY_AllocDlight?


Отправлено Cybermax 03-12-2013 в 16:32:

Цитата:
Дядя Миша писал:
Снести можно яйцо, если ты курица.

Выпилил, удалил?

__________________


Отправлено Дядя Миша 03-12-2013 в 16:53:

Cybermax не торопись с выводами. HAWK нам одно время рассказывал, что у него программа "летает". Мы за него радовались, а он имел в виду, что она у него "падает".

__________________
My Projects: download page

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

Цитата:

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


Отправлено HAWK0044 15-12-2013 в 13:05:

Дядя Миша да, было дело

вангую что он решил перенести фонарик из паранои, но перенёс только код длайтов и установку проекции, ни о каких рендерерах речи быть не может, опять же вангую что он нигде эти "снесённые" функции не вызывает.


Временная зона GMT. Текущее время 08:44.
Показать все 10 сообщений этой темы на одной странице

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