Sidebar

hud элементы

Noxter

Simpla Developer
02.09.07
2 766
36
2 GaNDyPaC:
Я не могу понять какой файл создавать и куда кидать на сервер или клиент
вот то что в файл нуно всунуть
Код:
// m_iState: 0 = Нет нажатия
//           1 = Нажато 1 раз
//           2 = Нажато дважды
//           3 = Готово к использованию

struct TapData_s 
{
	TapData_s( int key = 0, float dmin = 0, float dmax = 0 )
	:m_nKey(key), m_iState(0), 
	m_flPressTime1(gpGlobals->curtime), 
	m_flPressTime2(gpGlobals->curtime+1), 
	m_flDelayBetweenPressesMin(dmin),
	m_flDelayBetweenPressesMax(dmax)
	{}

	int m_iState;
	int m_nKey;

	float m_flPressTime1;
	float m_flPressTime2;
	float m_flDelayBetweenPressesMin;
	float m_flDelayBetweenPressesMax;

};

class CTapHandler
{
public:
	CTapHandler(){  }
        ~CTapHandler(){ m_vpTapDataList.PurgeAndDeleteElements(); }

	void AddKeyToTrackList( const int &nKey, const float &flTimeToPressTwiceMin, const float &flTimeToPressTwiceMax )
	{
		bool noMatches = true; // Lolmen : Проверка на наличие такой клавиши в списке
		FOR_EACH_VEC( m_vpTapDataList, i )
		{
			if ( m_vpTapDataList[ i ]->m_nKey == nKey )
			{
				noMathces = false;
				break;
			}
		}

		if ( noMatches )
			m_vpTapDataList.AddToTail( new TapData(nKey, flTimeToPressTwiceMin, flTimeToPressTwiceMax) );
	}

	void HandleKeysTaps( const CBasePlayer *pPlayer )
	{
		if (!pPlayer)
			return;
		FOR_EACH_VEC( m_vpTapDataList, i )
		{
			TapData_s *pCurTap = m_vpTapDataList[ i ];

			switch( pCurTap->m_iState )
			{
			case 0:
			{	// Lolmen : Первое нажатие игроком
				if ( pPlayer->m_afButtonPressed & pCurTap->m_nKey )
				{
					pCurTap->m_iState = 1;
					pCurTap->m_flPressTime1 = gpGlobals->curtime;
				}
			}
			break;
			case 1:
			{	// Lolmen : Второе нажатие игроком
				if ( pPlayer->m_afButtonPressed & pCurTap->m_nKey )
				{
					pCurTap->m_iState = 2;
					pCurTap->m_flPressTime2 = gpGlobals->curtime;
				}
			}
			break;
			case 2:
			{
				float dt = pCurTap->m_flPressTime2 - pCurTap->m_flPressTime1;
				// Lolmen : Больше наше dt или равно минимальному времени нажатия, 
				// или же, меньше, а может и равно максимальному времени?
				if ( dt >= pCurTap->m_flDelayBetweenPressesMin && dt <= pCurTap->m_flDelayBetweenPressesMax )
					pCurTap->m_iState = 3;	
				else
				{	// Lolmen : Если не прокатило сбрасываем статус на начало
					pCurTap->m_iState = 1;
					pCurTap->m_flPressTime1 = gpGlobals->curtime;
				}
			}
			break;
			default:
			{	// Lolmen : На следующем кадре опять сбрасываем статус, если достигнут результ
				if ( pCurTap->m_iState >= 3 )
				{
					pCurTap->m_iState = 1;
					pCurTap->m_flPressTime1 = gpGlobals->curtime;
				}
			}
			}
		}
	}
	void Update( void )
	{	// Lolmen : Покадровый обновитель
		CBasePlayer *pPlayer = UTIL_GetLocalPlayer();
		if ( pPlayer != NULL )
		{
			HandleKeysTaps( pPlayer );
		}
	}
	// Эта функция вернёт true только 1 раз за кадр
	bool KeyPressedTwice( const int &nKey )
	{
		FOR_EACH_VEC( m_vpTapDataList, i )
		{
			TapData_s *pCurTap = m_vpTapDataList[ i ];

			if ( pCurTap->m_nKey == nKey && pCurTap->m_iState >= 3 )
				return true;
		}
		return false;
	}
private:
	CUtlVector< TapData_s* > m_vpTapDataList;

};
 
Останнє редагування:

Noxter

Simpla Developer
02.09.07
2 766
36
2 Master_4if:
Если ты не по теме будеш постить нах с форума!!!
Тут кодинг обсуждают, а не постят "Тупые вещи"!

Post automatically merged:

Realspaik ты сдесь помоги мне то что я тебе в ЛС скинул плиз оч нужна твоя помощь только ты шариш!!!
 
Останнє редагування:

Game Server

Доноры Красавчики

Користувачі онлайн