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:
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 ) |
3 | if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] >= HORNET_MAX_CARRY) |
6 | while (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] < HORNET_MAX_CARRY && m_flRechargeTime < gpGlobals->time) |
8 | m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]++; |
9 | m_flRechargeTime += 0.5; |
Вот сама перезарядка. Ищи где накосячил.__________________
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:
Reload:
C++ Source Code:
1 | void CRpg::Reload( void ) |
3 | if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] >= 10) |
6 | while (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] < 10 && m_flRechargeTime < gpGlobals->time) |
8 | m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]++; |
Primary:
C++ Source Code:
1 | void CRpg::PrimaryAttack() |
5 | if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] == 0 ) |
9 | if (m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType] !=0 ) |
11 | m_pPlayer->m_iWeaponVolume = LOUD_GUN_VOLUME; |
12 | m_pPlayer->m_iWeaponFlash = BRIGHT_GUN_FLASH; |
15 | // player "shoot" animation |
16 | m_pPlayer->SetAnimation( PLAYER_ATTACK1 ); |
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; |
21 | CRpgRocket *pRocket = CRpgRocket::CreateRpgRocket( vecSrc, m_pPlayer->pev->v_angle, m_pPlayer, this ); |
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 ); |
26 | m_flRechargeTime = gpGlobals->time + 0.5; |
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) |
34 | #if defined( CLIENT_WEAPONS ) |
40 | PLAYBACK_EVENT( flags, m_pPlayer->edict(), m_usRpg ); |
43 | m_pPlayer->m_rgAmmo[m_iPrimaryAmmoType]--; |
45 | m_flNextPrimaryAttack = UTIL_WeaponTimeBase() + 0.1; |
46 | m_flTimeWeaponIdle = UTIL_WeaponTimeBase() + 1.0; |
Цитата:
Дядя Миша почему оно не замораживает 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:
давате можем не будем оффтопить?