Вы не вошли.

kirill67992

Новичок

  • "kirill67992" мужчина
  • "kirill67992" создал эту тему

Сообщений: 5

Место жительства: спб

Профессия: Эльдорадо

1

Четверг, 5 Ноябрь 2020, 02:25

Логика перезарядки в Firemode

Ребята помогите, создаю в 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);
}

Это сообщение было отредактировано 5 раз(а), последнее редактирование в "kirill67992" (5 Ноябрь 2020, 15:10)


2

Четверг, 5 Ноябрь 2020, 03:29

до полной реализации не хватает проигрывания анимации загрузки целого клипа из 5 патронов, когда их становится 0


Так поштучная зарядка нужна или нет? Ты хочешь целую обойму вставлять?
Legacy of the Yods



kirill67992

Новичок

  • "kirill67992" мужчина
  • "kirill67992" создал эту тему

Сообщений: 5

Место жительства: спб

Профессия: Эльдорадо

3

Четверг, 5 Ноябрь 2020, 03:47

Так поштучная зарядка нужна или нет? Ты хочешь целую обойму вставлять?

В общем логика такова, что если в магазине патронов больше нуля то нужна поштучная зарядка, если патронов 0, то что бы проигрывалась зарядка целого клипа из 5 патронов, сейчас у меня при любом раскладе работает поштучно
Извиняюсь, мисскликнул раздел, тему надо было в CE2 заводить))

Это сообщение было отредактировано 1 раз(а), последнее редактирование в "kirill67992" (5 Ноябрь 2020, 15:10)