Редактирование движка X-Ray - Страница 154 - Скрипты / конфиги / движок - AMK Team
Перейти к контенту

Редактирование движка X-Ray


Рекомендуемые сообщения

18 минут назад, dsh сказал:

Видимо потому, что

Видимо да)

Давно у меня вертелась на уме одна мысль. Озвучу пожалуй:

К 2020 году уже для любой мыслимой фичи в модах на "Сталкер", на вопрос "почему ее еще не сделали?" Правильным ответом будет - потому что никому из тех, кто мог это сделать, оно было не нужно.

Для любой и какой угодно, кем бы то ни было выдуманной. Просто пережеваны уже все идеи давно.

Мне, надо было убедиться. В справедливости этой мысли. Спасибо :) И, пошел я делать свой мод дальше.

@Zander_driver, они в сингле особо и не нужны, разве что если нужно что-то записать в них при спавне, с остальным отлично справляется save/load в клиенте.

  • Согласен 1

День добрый! Может не совсем в ту тему пишу: пытаюсь собрать исходники СДК 0.7 в борланде, при компиляции такая ошибка выскакивает:
78bb1713f09f2e02b736bea04cbc650e4d6ff436
Может кто знает в чем причина?

Подскажите пожалуйста, можно ли сразу переводить движок на vs2019 или для начала нужно мигрировать в vs2010 а потом на vs2019? Если использовать оригиналы исходников а не репос.

@XinnogeN XinnogeN

Сразу портируй на 2019, все эти промежутки ни к чему, объем переделок все равно будет +\- тот же.

Всем привет.
Кто-нибудь может помочь с одним движковым вылетом?
Я в С++ достаточно недавно, через отладчик пытался найти суть проблемы, но ничего не понял.
Буду очень благодарен.

Лог:

stack trace:

001B:55CCDF69 xrGame.dll, CDialogHolder::IgnorePause()

Отладчик ругается на строку inherited::shedule_Update (dt); в файле Entity.cpp (xrGame)
 

Добрый день, есть метательный нож на классе болта. Все отлично работает, но есть нюанс: если метнуть нож в НПС который в данный момент выполняет работу на смарт кавере - хит нпс не наносится - hit_callback вообще не срабатывает. Для дефолтных работ на смарт каверах (типа stay_table, stay_wall - без указания Available_animations в логике) хит не срабатывает всегда, если указать другую анимку, то с некоторым хит срабатывает (например с ward), с некоторыми (jup_b41_novikov_stand) нет. Подскажите, как можно исправить эту проблему, из-за чего может не срабатывать хит каллбек?

Из-за чего может не срабатывать хит-каллбек в неизвестно каком движке, в коде которого делали неизвестно какие изменения.

:crazy2: Даже не знаю. Возможно, неправильно настроена погода на Марсе.

  • Смешно 1

Движок ЗП 1.6.02 Объект на классе болта, вот сам класс
 

Скрытый текст



CBolt::CBolt(void)
{
}

CBolt::~CBolt(void)
{
}

void CBolt::Load(LPCSTR section)
{
	inherited::Load(section);
}

BOOL CBolt::net_Spawn(CSE_Abstract* DC)
{
	BOOL ret = CHudItemObject::net_Spawn(DC);
	m_thrown = false;
	return ret;
}

void CBolt::net_Destroy()
{
	CHudItemObject::net_Destroy();
}

void CBolt::OnH_B_Independent(bool just_before_destroy)
{
	CHudItemObject::OnH_B_Independent(just_before_destroy);
}

void CBolt::OnH_A_Independent()
{
	inherited::OnH_A_Independent();
}

void CBolt::OnH_A_Chield()
{
	inherited::OnH_A_Chield();
	CObject* o= H_Parent()->H_Parent();
	if (o)
		SetInitiator(o->ID());
}

void CBolt::State(u32 state)
{
	switch (state)
	{
	case eThrowStart:
	{
		Fvector						C;
		Center(C);
	}break;
	case eThrowEnd:
	{
		if (m_thrown)
		{
			if (m_pPhysicsShell)
				m_pPhysicsShell->Deactivate();
			xr_delete(m_pPhysicsShell);
			PutNextToSlot();
			if (Local())
			{
				DestroyObject();
			}

		};
	}break;
	};
	inherited::State(state);
}

bool CBolt::DropBolt()
{
	EMissileStates bolt_state = static_cast<EMissileStates>(GetState());
	if (((bolt_state == eThrowStart) ||
		(bolt_state == eReady) ||
		(bolt_state == eThrow)) &&
		(!m_thrown)
		)
	{
		Throw();
		return true;
	}
	return false;
}

void CBolt::DiscardState()
{
	if (GetState() == eReady || GetState() == eThrow)
		OnStateSwitch(eIdle);
}

void CBolt::SendHiddenItem()
{
	if (GetState() == eThrow)
	{
		Throw();
	}
	CActor* pActor = smart_cast<CActor*>(m_pInventory->GetOwner());
	if (pActor && (GetState() == eReady || GetState() == eThrow))
	{
		return;
	}

	inherited::SendHiddenItem();
}

void CBolt::Throw()
{
	if (m_thrown)
		return;

	if (!m_fake_missile)
		return;

	inherited::Throw();
	m_fake_missile->processing_activate();
	m_thrown = true;
}


void CBolt::Destroy()
{
	
}

bool CBolt::Useful() const
{
	return (TestServerFlag(CSE_ALifeObject::flCanSave));
}

void CBolt::OnEvent(NET_Packet& P, u16 type)
{
	inherited::OnEvent(P, type);
}

void CBolt::PutNextToSlot()
{
	if (OnClient()) return;

	VERIFY(!getDestroy());
	NET_Packet						P;
	if (m_pInventory)
	{
		m_pInventory->Ruck(this);

		this->u_EventGen(P, GEG_PLAYER_ITEM2RUCK, this->H_Parent()->ID());
		P.w_u16(this->ID());
		this->u_EventSend(P);
	}
	else
		Msg("! PutNextToSlot : m_pInventory = NULL [%d][%d]", ID(), Device.dwFrame);

	if (smart_cast<CInventoryOwner*>(H_Parent()) && m_pInventory)
	{
		CBolt *pNext = smart_cast<CBolt*>(m_pInventory->Same(this, true));

		VERIFY(pNext != this);

		if (pNext && m_pInventory->Slot(pNext->BaseSlot(), pNext))
		{
			pNext->u_EventGen(P, GEG_PLAYER_ITEM2SLOT, pNext->H_Parent()->ID());
			P.w_u16(pNext->ID());
			P.w_u16(pNext->BaseSlot());
			pNext->u_EventSend(P);
			m_pInventory->SetActiveSlot(pNext->BaseSlot());
		}
		else
		{
			CActor* pActor = smart_cast<CActor*>(m_pInventory->GetOwner());

			if (pActor)
				pActor->OnPrevWeaponSlot();
		}

		m_thrown = false;
	}
}

void CBolt::OnAnimationEnd(u32 state)
{
	switch (state)
	{
		case eHiding:
		{
			setVisible(FALSE);
			SwitchState(eHidden);
		} break;
		case eShowing:
		{
			setVisible(TRUE);
			SwitchState(eIdle);
		} break;
		case eThrowStart:
		{
			if (!m_fake_missile && !smart_cast<CMissile*>(H_Parent()))
			{
				Level().spawn_item(*cNameSect(),Position(), (g_dedicated_server) ? u32(-1) : ai_location().level_vertex_id(), ID(), false);
			}
			if (m_throw)
				SwitchState(eThrow);
			else
				SwitchState(eReady);
		} break;
		case eThrow:
		{
			SwitchState(eThrowEnd);
		} break;
		case eThrowEnd:
		{
			SwitchState(eHidden);
		} break;
		default:
			inherited::OnAnimationEnd(state);
	}
}


void CBolt::UpdateCL()
{
	inherited::UpdateCL();
}


bool CBolt::Action(u16 cmd, u32 flags)
{
	if (inherited::Action(cmd, flags)) return true;

	switch (cmd)
	{
		//переключение типа болтов
	case kWPN_NEXT:
	{
		if (flags&CMD_START)
		{
			if (m_pInventory)
			{
				TIItemContainer::iterator it = m_pInventory->m_ruck.begin();
				TIItemContainer::iterator it_e = m_pInventory->m_ruck.end();
				for (; it != it_e; ++it)
				{
					CBolt *pBolt = smart_cast<CBolt*>(*it);
					if (pBolt && xr_strcmp(pBolt->cNameSect(), cNameSect()))
					{
						m_pInventory->Ruck(this);
						m_pInventory->SetActiveSlot(NO_ACTIVE_SLOT);
						m_pInventory->Slot(pBolt->BaseSlot(), pBolt);
						return						true;
					}
				}
				return true;
			}
		}
		return true;
	};
	}
	return false;
}

BOOL CBolt::UsedAI_Locations()
{
	return inherited::UsedAI_Locations();
}

void CBolt::net_Relcase(CObject* O)
{
	inherited::net_Relcase(O);
}

void CBolt::DeactivateItem()
{
	//Drop bolt if primed
	StopCurrentAnimWithoutCallback();
	if (!GetTmpPreDestroy() && Local() && (GetState() == eThrowStart || GetState() == eReady || GetState() == eThrow))
	{
		if (m_fake_missile)
		{
			CBolt*		pBolt = smart_cast<CBolt*>(m_fake_missile);
			if (pBolt)
			{
				if (m_pInventory->GetOwner())
				{
					CActor* pActor = smart_cast<CActor*>(m_pInventory->GetOwner());
					if (pActor)
					{
						if (!pActor->g_Alive())
						{
							m_constpower = false;
							m_fThrowForce = 0;
						}
					}
				}
				Throw();
			};
		};
	};

	inherited::DeactivateItem();
}

bool CBolt::GetBriefInfo(II_BriefInfo& info)
{
	VERIFY(m_pInventory);
	info.clear();

	info.name._set(m_nameShort);
	info.icon._set(cNameSect());

	u32 ThisBoltCount = m_pInventory->dwfGetSameItemCount(cNameSect().c_str(), true);

	string16 stmp;
	xr_sprintf(stmp, "%d", ThisBoltCount);
	info.cur_ammo._set(stmp);
	return true;
}

void CBolt::SetInitiator(u16 id)
{
	m_thrower_id = id;
}

u16	CBolt::Initiator()
{
	return m_thrower_id;
}

void CBolt::activate_physic_shell()
{
	inherited::activate_physic_shell	();
	m_pPhysicsShell->SetAirResistance	(.0001f);
}

using namespace luabind;

#pragma optimize("s",on)
void CBolt::script_register(lua_State *L)
{
	module(L)
		[
			class_<CBolt, CGameObject>("CBolt")
			.def(constructor<>())
		];
}


 

 

Изменено пользователем W.A.S.P.
спойлер

Привет объясните пожалуйста как мне исправить этот ужас при движении вправо(лево), оружие дергается.

Я даже не знаю где и чем это вызвано,помогите исправить.

 

https://youtu.be/jWg9GZlQf_k

@yurikteam, Это фишка игры ещё с оригинала - инерция оружия при стрейфах. По идее, всё должно быть плавно, это у тебя частота 5 кадра в неделю, вот и похоже на дёрганье.

  • Согласен 1
  • Не согласен 2
7 часов назад, Сталкер Лом сказал:

@yurikteam, Это фишка игры ещё с оригинала - инерция оружия при стрейфах. По идее, всё должно быть плавно, это у тебя частота 5 кадра в неделю, вот и похоже на дёрганье.

У моего друга игровой ПК, и если без записи у меня 50-70 ФПС, и ничего не меняется, мне помогали перенести исходник с 2008 в 2015 студию, и после этого появилось это.

7 часов назад, Сталкер Лом сказал:

@yurikteam, Это фишка игры ещё с оригинала - инерция оружия при стрейфах. По идее, всё должно быть плавно, это у тебя частота 5 кадра в неделю, вот и похоже на дёрганье.

И в МП такого нет, мне нужно узнать где это описывается, хочу попробовать сравнить, просто я знаю что мне человек который помогал что то испортил, и тут это вылезло.

Приветствую. Каким Visual Studio лучше всего пользоваться?

В 20.01.2020 в 17:33, AndreySol сказал:

@XinnogeN XinnogeN

Сразу портируй на 2019, все эти промежутки ни к чему, объем переделок все равно будет +\- тот же.

Спасибо, так и делаю.

Всем привет. Есть тут знающие люди, как sound environment в ЗП восстановить?
Где только не лазал, везде какие-то мелкие правки не дающие никакого результата.

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...