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

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- CRPG (https://hlfx.ru/forum/showthread.php?threadid=2986)


Отправлено b2soft 05-09-2011 в 18:02:

Half-Life CRPG

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

Переписав код PrimaryAttack из HGun'a в RPG (ессно кое-что переточив под рпг-шку)получил интересную картину - ракеты заряжаются, но в HUD'e они отображаются только при стрельбе. На практике это выглядит так: в ХАДЕ справа 10 ракет (как primaryammo), выстрелил все, в хаде пишет ноль. я поставил на перезарядку одной ракеты - 1 секунду для точности. Через пять секунд стреляю ракетой, в хаде пишет цифру "4".выстрелил еще четыре которые там и были - в хаде ноль. через 10 секунд та же песня - в хаде девять, восемь,семь до нуля, но вверх они ползти не хотят.

Думаю что проблема в клиенте, но где? ) Подскажите, в чём возможная проблема?


Отправлено Дядя Миша 05-09-2011 в 18:51:

C++ Source Code:
1
void CHgun::Reload( void )
2
{
3
  if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] >= HORNET_MAX_CARRY)
4
    return;
5
 
6
  while (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] < HORNET_MAX_CARRY && m_flRechargeTime < gpGlobals->time)
7
  {
8
    m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]++;
9
    m_flRechargeTime += 0.5;
10
  }
11
}

Вот сама перезарядка. Ищи где накосячил.

__________________
My Projects: download page

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

Цитата:

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


Отправлено KiQ 05-09-2011 в 18:58:

Дядя Миша почему оно не замораживает while'ом процесс игры?

__________________
-Brain is dead-


Отправлено b2soft 05-09-2011 в 19:15:

Half-Life

Reload:

C++ Source Code:
1
void CRpg::Reload( void )
2
{
3
  if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] >= 10)
4
    return;
5
 
6
  while (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] < 10 && m_flRechargeTime < gpGlobals->time)
7
  {
8
    m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]++;
9
    m_flRechargeTime += 1;
10
  }
11
}


Primary:
C++ Source Code:
1
void CRpg::PrimaryAttack()
2
{
3
  Reload( );
4
 
5
  if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] == 0 )
6
  {
7
    return;
8
  }
9
  if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] !=0 )
10
  {
11
    m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME;
12
    m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH;
13
 
14
#ifndef CLIENT_DLL
15
    // player "shoot" animation
16
    m_pPlayer->SetAnimation( PLAYER_ATTACK1 );
17
 
18
    UTIL_MakeVectors( m_pPlayer->pev->v_angle );
19
    Vector vecSrc = m_pPlayer->GetGunPosition( ) + gpGlobals->v_forward * 16 + gpGlobals->v_right * 8 + gpGlobals->v_up * -8;
20
 
21
    CRpgRocket *pRocket = CRpgRocket::CreateRpgRocket( vecSrc, m_pPlayer->pev->v_angle, m_pPlayer, this );
22
 
23
    UTIL_MakeVectors( m_pPlayer->pev->v_angle );// RpgRocket::Create stomps on globals, so remake.
24
    pRocket->pev->velocity = pRocket->pev->velocity + gpGlobals->v_forward; //* DotProduct( m_pPlayer->pev->velocity, gpGlobals->v_forward );
25
 
26
    m_flRechargeTime = gpGlobals->time + 0.5;
27
#endif
28
 
29
 
30
    // firing RPG no longer turns on the designator. ALT fire is a toggle switch for the LTD.
31
    // Ken signed up for this as a global change (sjb)
32
 
33
    int flags;
34
#if defined( CLIENT_WEAPONS )
35
    flags = FEV_NOTHOST;
36
#else
37
    flags = 0;
38
#endif
39
 
40
    PLAYBACK_EVENT( flags, m_pPlayer->edict(), m_usRpg );
41
 
42
    //m_iClip--;
43
    m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--;
44
 
45
    m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1;
46
    m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0;
47
  }
48
  /*	else
49
  	{
50
  		PlayEmptySound( );
51
  	}*/
52
 
53
  UpdateSpot( );
54
}



Цитата:
Дядя Миша почему оно не замораживает while'ом процесс игры?


а должно? цикл будет выполняться тогда, когда и временная переменная будет работать (как я понимаю она всегда работает) и если количество патрончиков-грызунов<HORNET_MAX_CARRY (по дефолту=8), а ведь на каждой итерации число этих грызунов увеличивается, пока не дойдет до восьми, потом цикл просто не работает.


Отправлено Дядя Миша 05-09-2011 в 20:44:

KiQ а там не более одной итерации за раз происходит.
Ну в крайнем случае - две-три, если был какой-то лаг.
Это ты после while( 1 ); так нервно на всё реагируешь?

__________________
My Projects: download page

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

Цитата:

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


Отправлено b2soft 06-09-2011 в 04:05:

Дядя Миша, ну вроде код правильный, но не работает=)


Отправлено KiQ 06-09-2011 в 10:15:

Дядя Миша после while(true)

__________________
-Brain is dead-


Отправлено Дядя Миша 06-09-2011 в 10:56:

KiQ а разница?

__________________
My Projects: download page

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

Цитата:

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


Отправлено b2soft 06-09-2011 в 12:01:

давате можем не будем оффтопить?


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

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