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
 

Mixtaz - zdjęcie

Mixtaz

Rejestracja: 08.12.2016
Aktualnie: Nieaktywny
Poza forum Ostatnio: 28.11.2023 13:03
-----

Moje tematy

FL_DUCKING nie wychwytuje tego co chce

19.10.2023 15:01

Próbuje zmodyfikować odrzut gdy gracz w pozycji kucaka zostaje ostrzelany z dowolnej broni. Wprowadziłem kod, który działa ale wykonuje się tylko w momencie gdy gracz wywoła komende będąc na kucaka, inaczej nie przynosi skutku. Poniżej wklejam kod z trzech relewantnych części kodu:

 

 

Hook łapiący oddawanie strzału

public bacon_traceattack_player(victim, attacker, Float:damage, Float:direction[3], tracehandle, damagetype)
{
	if(!g_gamestarted) 
		return HAM_SUPERCEDE
	
	if(!get_pcvar_num(cvar_knockback) || !(damagetype & DMG_BULLET))
		return HAM_IGNORED
	
	if(!is_user_connected(attacker) || !g_zombie[victim])
		return HAM_IGNORED

	if(g_kbReduction[victim] == 1.0)
		return HAM_IGNORED
	
	static kbpower
	kbpower = g_weapon_knockback[get_user_weapon(attacker)]
	
	if(kbpower != -1) 
	{
		static flags
		flags = pev(victim, pev_flags)
		
		if(get_pcvar_num(cvar_knockback_duck) && (isDucking(victim) && (flags & FL_ONGROUND)))
			return HAM_IGNORED
		
		static Float:origins[2][3]
		pev(victim, pev_origin, origins[0])
		pev(attacker, pev_origin, origins[1])
		
		if(get_distance_f(origins[0], origins[1]) <= get_pcvar_float(cvar_knockback_dist))
		{
			static Float:velocity[3]
			pev(victim, pev_velocity, velocity)
			
			static Float:tempvec
			tempvec = velocity[2]
			
			xs_vec_mul_scalar(direction, damage, direction)

			if(g_kbReduction[victim] == 0.0)
				xs_vec_mul_scalar(direction, g_knockbackpower[kbpower], direction)
			else
				xs_vec_mul_scalar(direction, g_kbReduction[victim]*g_knockbackpower[kbpower], direction)
			
			xs_vec_add(direction, velocity, velocity)
			velocity[2] = tempvec
			
			set_pev(victim, pev_velocity, velocity)
			
			return HAM_HANDLED
		}
	}

	return HAM_IGNORED
}

Funkcja mająca na celu redukcje odrzutu (knockbacku):

public set_user_kbimmunity(id, Float:fReduction, bool:bUserCrouched)
{
	if(bUserCrouched == true)
	{
		if(isDucking(id))
			g_kbReduction[id] = fReduction;
	} else
		g_kbReduction[id] = fReduction;
}

Makrodefinicja isDucking:

#define isDucking(%1) (pev(%1, pev_flags) & FL_DUCKING) 

deklaracja zmiennej: new Float:g_kbReduction[33];

 

Jedyny pomysł jaki przychodzi i do głowy to stworzenie enuma, dołączenie go do tablicy i sprawdzanie stanu na jego podstawie.. Ale jak to później wykorzystać jako natyw? Czy może z obecną strukturą zmiennej da się to zrobić?

 

 

[ROZWIĄZANE] Predefiniowany czas rundy wyrażony w sekundach

10.10.2023 10:06

Jak w temacie. Chce się dowiedzieć czy jest możliwość ustawienia czasu trwania rundy na wartość w sekundach, np:

80 sek (1:20)
200 sek (3:20)

bez wykorzystania modułu Orpheu.

 

Cvar mp_roundtime przyjmuje wartości int, ale dla pełnych minut. Pozdro.