HLFX.Ru Forum Страницы (5): [1] 2 3 4 5 »
Показать все 67 сообщений этой темы на одной странице

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=3457)


Отправлено Lev 05-06-2012 в 05:29:

Кодинг оружия

Не знаю возможно ли - но всё же - можно как нибудь посчитать, сколько пуль подряд выпустила пушка, или же сколько времени зажата атака (для автоматов)?


Отправлено DefilerUnit 05-06-2012 в 07:44:

это подойдёт?
http://hlpp.thewavelength.net/tuts/burst.htm


Отправлено HAWK0044 05-06-2012 в 08:03:

DefilerUnit
не подойдёт.Точнее подойдёт, но что-то метод через weaponidle меня настораживает.

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

float flFirstShot;

if(!flFirstShot)
flFirstShot = gpGlobals->time + 1.0;//1.0 - твоё время

if(flFirstShot > gpGlobals->time)
{
m_iShoots++;
}
else
{
flFirstShot = 0.0;
m_iShoots=0;
}


Отправлено Дядя Миша 05-06-2012 в 10:12:

Lev пиши по русски - хочу замутить перегрев оружия. Все беды от того, что люди называют вещи не своими именами.

__________________
My Projects: download page

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

Цитата:

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


Отправлено Lev 05-06-2012 в 13:05:

Ну можно и так сказать - только мне нужно просто сделать кастомный дым при прохождении временного поргога стрельбы. Вот таким спрайтом


Отправлено ONeiLL 05-06-2012 в 13:11:

Lev , таким спрайтом сложновато будет замутить, ведь спрайт всегда смотрит лицом к игроку

Добавлено 05-06-2012 в 16:11:

Или дым у тебя вверх должен быть направлен?


Отправлено Lev 05-06-2012 в 13:15:

У меня в entity.cpp есть дым - круглый, после каждого выстрела

C++ Source Code:
1
void VectorAngles( const float *forward, float *angles );
2
 
3
float zz_framerate = CVAR_GET_FLOAT( "zz_framerate" );
4
float zz_fadespeed = CVAR_GET_FLOAT( "zz_fadespeed" );
5
float zz_life = CVAR_GET_FLOAT( "zz_life" );
6
float zz_alpha = CVAR_GET_FLOAT( "zz_alpha" );
7
 
8
int iSmoke = CVAR_GET_FLOAT("cl_gunsmoke");
9
 
10
TEMPENTITY *pSmokeTempEntity;
11
int  iGunSmoke = gEngfuncs.pEventAPI->EV_FindModelIndex ("sprites/gunsmoke.spr");
12
 
13
TEMPENTITY *pSmokeTempEntity2;
14
int  iGunSmoke2 = gEngfuncs.pEventAPI->EV_FindModelIndex ("sprites/gunsmoke2.spr");
15
 
16
vec3_t up, right, forward, angles;
17
 
18
cl_entity_t *ent = gEngfuncs.GetEntityByIndex( entity->index );
19
 
20
angles =  ent->curstate.angles;
21
 
22
AngleVectors( entity->angles, forward, up, right );
23
 
24
 
25
 
26
switch( event->event )
27
{
28
case 5001:
29
    pSmokeTempEntity = gEngfuncs.pEfxAPI->R_TempSprite( (float *)&entity->attachment[0], Vector (1,1,1)/*forward * gEngfuncs.pfnRandomLong ( -1 , 1 ) + right * gEngfuncs.pfnRandomLong ( -1 , 1 ) + up * gEngfuncs.pfnRandomLong ( -1 , 1 )*/,
30
  0.3,
31
  iGunSmoke,//iGunSmoke
32
  kRenderTransAdd,
33
  kRenderFxNone,
34
  1.0,//1.0
35
  0.5, //1
36
  FTENT_SPRANIMATE| FTENT_FADEOUT);
37
 
38
  if(pSmokeTempEntity)
39
  {    // sprite created successfully, adjust some things
40
  pSmokeTempEntity->fadeSpeed = gEngfuncs.pfnRandomLong ( 10.0 , 2.0 );
41
  pSmokeTempEntity->entity.curstate.framerate = 20;
42
  pSmokeTempEntity->entity.curstate.renderamt = 255;
43
  pSmokeTempEntity->entity.curstate.rendercolor.r = COLOR_VALUE;
44
  pSmokeTempEntity->entity.curstate.rendercolor.g = COLOR_VALUE;
45
  pSmokeTempEntity->entity.curstate.rendercolor.b = COLOR_VALUE;
46
}
47
gEngfuncs.pEfxAPI->R_MuzzleFlash( (float *)&entity->attachment[0], atoi( event->options) );
48
DlightFlash((float *)&entity->attachment[0]);
49
break;
- а новый дым должен возникать только при перегреве - от ствола - вроде горячего воздуха


Отправлено Дядя Миша 05-06-2012 в 13:16:

Цитата:
ONeiLL писал:
ведь спрайт всегда смотрит лицом к игроку

кто тебя так обманул?

__________________
My Projects: download page

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

Цитата:

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


Отправлено ONeiLL 05-06-2012 в 13:32:

Ну если не скомпилить с параметром oriented или vp_parallel_upright


Отправлено qpAHToMAS 05-06-2012 в 23:36:

Какая разница, какой спрайт. Человек спрашивал как отловить конкретный момент, а создать эффект — совсем другое дело.


Отправлено Lev 06-06-2012 в 07:37:

Мне нужно узнать три вещи: первое - как и где ловить этот момент(я думаю что на сервере в коде самого оружия), второе - как передать этот момент на клиент, чтобы им можно было воспользоваться в эвентах, и третье - в выше преведённом мной коде, дым после выстрела не прикреплён к стволу, а остаётся там, где произошёл выстрел - и в этом случае это нормально, но новый эффект мне нужно бы зафиксировать на стволе - как это можно сделать?


Отправлено ONeiLL 06-06-2012 в 08:12:

Код дал HAWK0044

Его в PrimaryAttack

C++ Source Code:
1
if(!flFirstShot)
2
  flFirstShot = gpGlobals->time + 1.0;//1.0 - твоё время
3
 
4
if(flFirstShot > gpGlobals->time)
5
{
6
  m_iShoots++;
7
}
8
else
9
{
10
  flFirstShot = 0.0;
11
  m_iShoots=0;
12
}
13
 
14
if( m_iShoots >= 10 ) // После 10 выстрелов дым
15
{
16
  // А вот здесь уже и  надо наш дым делать, как думай сам
17
}


Предварительно переменные flFirstShot и flFirstShot надо объявить в классе оружия или в CBaseWeapon, потом в функ. Deploy их поидее надо обнулять.

Добавлено 06-06-2012 в 11:12:

И я не уверен, будет это работать или нет )))


Отправлено Lev 06-06-2012 в 17:45:

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


Отправлено marikcool 06-06-2012 в 18:14:

зачем пересылать?, клиентское оружие и так проиграет после 10 выстрела то что требуется.


Отправлено Lev 06-06-2012 в 18:26:

Ты имеешь в виду то, которое в ev_hldm.cpp? А как это сделать?


Временная зона GMT. Текущее время 22:38. Страницы (5): [1] 2 3 4 5 »
Показать все 67 сообщений этой темы на одной странице

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