Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Wyciszenie kroków na shifcie przy dużych prędkościach


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
4 odpowiedzi w tym temacie

#1 Rivit

    Godlike

  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 22.07.2015 07:27

Witam,

Ostatnio się zdziwiłem jak w moim CoD słychać tupanie na shifcie, normalnie jakbym szedł, potem dograłem to:

public CmdStart(id)
{		
	if(!is_user_alive(id)) return;

	static Float:velocity[3];
	pev(id, pev_velocity, velocity);
	if(szybkosc_gracza[id] > vector_length(velocity)*1.8)
		set_pev(id, pev_flTimeStepSound, 300);
}

Jednak to też nie załatwia sprawy... Co jakiś czas słychać tupnięcie (cały czas rozmawiamy o chodzeniu na shifcie), nie są to normalne kroki tylko tupnięcia co jakiś czas.

 

Jak to naprawić? Na ile dać pev_flTimeStepSound? Za co ono odpowiada?


  • +
  • -
  • 0

#2 tytusek

    Czempion

  • Power User

Reputacja: 229
Wszechwidzący

  • Postów:822
Offline

Napisano 22.07.2015 18:02

a taki pytanie całkiem z innej beczki co się stanie jeśli wyrzucę sprawdzanie czy gracz zyje ?~~is_user_alive


  • +
  • -
  • 0

#3 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 23.07.2015 07:30

// JustinHoMi made this one originally
static cell AMX_NATIVE_CALL set_user_footsteps(AMX *amx, cell *params) // set_user_footsteps(id, set = 1); = 2 params
{
	// Gives player silent footsteps.
	// if set=0 it will return footsteps to normal
	// params[1] = index of player
	// params[2] = 0 = normal footstep sound, 1 = silent slippers

	// Check index
	CHECK_PLAYER(params[1]);

	// Fetch player pointer
	edict_t *pPlayer = MF_GetPlayerEdict(params[1]);
	
	if (params[2]) {                
		pPlayer->v.flTimeStepSound = 999;
	}
	else {
		pPlayer->v.flTimeStepSound = STANDARDTIMESTEPSOUND;
	}

	return 1;
}
#define CHECK_PLAYER(x) \
	if (x < 1 || x > gpGlobals->maxClients) { \
		MF_LogError(amx, AMX_ERR_NATIVE, "Player out of range (%d)", x); \
		return 0; \
	} else { \
		if (!MF_IsPlayerIngame(x) || FNullEnt(MF_GetPlayerEdict(x))) { \
			MF_LogError(amx, AMX_ERR_NATIVE, "Invalid player %d", x); \
			return 0; \
		} \
	}
#define STANDARDTIMESTEPSOUND	400

Nie ma tu sprawdzania czy gracz żyje, zapewne jest niepotrzebne w tym CmdStart

 

 

 

 

 

Zresztą, jak będzie martwy to jego  prędkość będzie 0 i nie dojdzie do ustawienia pev_flTimeStepSound


  • +
  • -
  • 0

#4 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 23.07.2015 13:12

set_pev(id, pev_flTimeStepSound, 999)

  • +
  • -
  • 0

#5 Rivit

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 1 319
Godlike

  • Postów:4 380
Offline

Napisano 23.07.2015 13:32

Tak, próbowałem, i to jest skuteczne (moduł fun ustawia 999 w thinku), ale mamy problem...

 

 

Jak się zatrzymam (prędkosć 0) i rusze to przez ~1,5s nie ma dźwięku kroków, pewnie nic takiego ale wystarczy, że co sekunde będę wciskał shift i już mam ciche chodzenie (mimo iż biegnę sekunde z pełną prędkośćią)

 

 

Jest na to jakiś sposób?

public CmdStart(id)
{
	static Float:velocity[3], Float:speed;
	
	speed = vector_length(velocity)
	pev(id, pev_velocity, velocity);
	if(szybkosc_gracza[id] > speed * 1.8 && speed)
		set_pev(id, pev_flTimeStepSound, 999);
}

public CmdStart(id, uc_handle)
{
	static Float:fmove, Float:smove, Float:walkspeed;
	get_uc(uc_handle, UC_ForwardMove, fmove);
	get_uc(uc_handle, UC_SideMove, smove );
	
	walkspeed = szybkosc_gracza[id] * 0.52
	fmove = floatabs(fmove);
	smove = floatabs(smove);
	if(fmove <= walkspeed && smove <= walkspeed && !(fmove == 0.0 && smove == 0.0))
		set_pev(id, pev_flTimeStepSound, 999);
}

public CmdStart(id, uc)
{
	static Float:flMoveSpeed

	get_uc(uc, UC_ForwardMove, flMoveSpeed)
	if( !flMoveSpeed )
		get_uc(uc, UC_SideMove, flMoveSpeed)

	if( 0.0 < floatabs(flMoveSpeed) <= szybkosc_gracza[id] * 0.52 )
		set_pev(id, pev_flTimeStepSound, 999);
}

Te 3 kody, każdy zawodzi, przy rozpędzaniu się są ciche kroki, a jak zmniejsze pev_flTimeStepSound to słychać kroki na shifcie, więc musi zostać :/

 

 

 

Jakieś pomysły?


  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych