Ребята помогите, создаю в Crysis оружие Kar98k, закончил адаптацию моделей, материалов, почти всей анимации, скриптов и саунда,
нужна помощь с редактированием кода в файрмоде, за основу был взят класс из Shotgun, т.к. это оружие имеет всего 5 патронов, и как по аналогии в Shotgun возможна поштучная зарядка, немного отредактировал код, добавил проигрывание анимации закрытия затвора при отмене перезарядки, но до полной реализации не хватает проигрывания анимации загрузки целого клипа из 5 патронов, когда их становится 0, а не поштучной зарядки 5 патронов в винтовку
это по типу проигрывания анимаций с reload_chamber_full и reload_chamber_empty когда проигрываются разные анимации в зависимости от того, если патронов больше 0 или равно 0
Думаю понятно объяснил и надеюсь на помощь так как в с++ пока не горазд
)
|
Код
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
void CRifle::StartReload(int zoomed)
{
// If reload was broken to shoot, do not start a reload before shooting
if (m_break_reload)
return;
int ammoCount = m_pWeapon->GetAmmoCount(m_fireparams.ammo_type_class);
if ((ammoCount >= m_fireparams.clip_size) || m_reloading)
return;
m_max_shells = m_fireparams.clip_size - ammoCount;
m_reload_was_broken = false;
m_reloading = true;
if (zoomed)
m_pWeapon->ExitZoom();
IEntityClass *ammo = m_fireparams.ammo_type_class;
m_pWeapon->OnStartReload(m_pWeapon->GetOwnerId(), ammo);
m_pWeapon->PlayAction(g_pItemStrings->begin_reload, 0, false,
CItem::eIPAF_Default | CItem::eIPAF_RepeatLastFrame);
m_reload_pump = ammoCount > 0 ? false : true;
uint animTime = m_pWeapon->GetCurrentAnimationTime(CItem::eIGS_FirstPerson);
if (animTime == 0)
animTime = 500; // For DS
m_pWeapon->GetScheduler()->TimerAction(animTime, CSchedulerAction<BeginReloadLoop>::Create(BeginReloadLoop(this, zoomed)), false);
m_pWeapon->GetScheduler()->TimerAction((uint)((m_fireparams.reload_time - 0.125 f) *1000),
CSchedulerAction<SliderBack>::Create(this), false);
}
|