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

Emit Sound


  • Zamknięty Temat jest zamknięty
5 odpowiedzi w tym temacie

#1 Pittero

    Wszechwiedzący

  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:545
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 07.05.2011 16:28

Co oznacza register_forward(FM_EmitSound, "EmitSound") w tej funkcji parametr channel tzn: chodzi mi to:
if(!is_user_alive(id) || (channel != 3)) 

w
public EmitSound(id, channel, const sample[])

  • +
  • -
  • 0

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 07.05.2011 16:34

Jest to kanał emitowania dźwięku.

amxconst.inc
/* Constants for emit_sound() */
/* Channels */
#define CHAN_AUTO		0
#define CHAN_WEAPON		1
#define	CHAN_VOICE		2
#define CHAN_ITEM		3
#define	CHAN_BODY		4
#define CHAN_STREAM		5	/* allocate stream channel from the static or dynamic area */
#define CHAN_STATIC		6	/* allocate channel from the static area  */
#define CHAN_NETWORKVOICE_BASE	7	/* voice data coming across the network */
#define CHAN_NETWORKVOICE_END	500	/* network voice data reserves slots (CHAN_NETWORKVOICE_BASE through CHAN_NETWORKVOICE_END). */

Tu warunek filtruje przepuszczając tylko dźwięki z CHAN_ITEM, a potem dopiero sprawdza plik .wav (sample[]). Porównanie liczb jest szybsze niż porównanie stringów.
  • +
  • -
  • 0

#3 Pittero

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:545
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 07.05.2011 16:58

A czy to jest poprawnie napisane ? Czy mozna jakos zoptymalizowac ?
Bo np wciskajac co 1s noktowizor nie zablokuje dzwieku.
public EmitSound(id, channel, sample[])
{
if(!is_user_alive(id))
{
return FMRES_IGNORED;
}
if(equal(sample, "weapons/knife_", 14))
{
if(equal(sample, "weapons/knife_hitwall1.wav") || equal(sample, "weapons/knife_hitwall1.wav"))
{
emit_sound(id, CHAN_WEAPON, "prison_volta/uderzenie_mur.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
else if(equal(sample, "weapons/knife_hit1.wav") || equal(sample, "weapons/knife_hit2.wav"))
{
emit_sound(id, CHAN_WEAPON, "prison_volta/hit1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
else if(equal(sample, "weapons/knife_hit3.wav") || equal(sample, "weapons/knife_hit4.wav"))
{
emit_sound(id, CHAN_WEAPON, "prison_volta/hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
else if(equal(sample, "weapons/knife_slash1.wav") || equal(sample, "weapons/knife_slash2.wav"))
{
emit_sound(id, CHAN_WEAPON, "prison_volta/machanie.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
else if(equal(sample, "weapons/knife_stab.wav"))
{
emit_sound(id, CHAN_WEAPON, "prison_volta/prawy_przycisk.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
return FMRES_SUPERCEDE
}
else if(equal(sample, "weapons/knife_deploy.wav") || equal(sample, "weapons/knife_deploy1.wav"))
{
return FMRES_SUPERCEDE
}
}
if(equali(sample, "common/wpn_denyselect.wav") || equali(sample, "items/nvg_on.wav") || equali(sample, "items/nvg_off.wav"))
{
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}

  • +
  • -
  • 0

#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 07.05.2011 18:05

Znam coś idealnego w tej sytuacji: drzewo reTRIEval z celltrie.inc
Jest to najszybsza dostępna w amxxowym Pawnie metoda porównywania tekstów, zbudowanie drzewa jest dość kosztowne, ale potem w użycie jest bardzo przyjemne

Załączone pliki


  • +
  • -
  • 0

#5 Pittero

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:545
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 07.05.2011 18:53

Znam coś idealnego w tej sytuacji: drzewo reTRIEval z celltrie.inc
Jest to najszybsza dostępna w amxxowym Pawnie metoda porównywania tekstów, zbudowanie drzewa jest dość kosztowne, ale potem w użycie jest bardzo przyjemne

To dlatego nieraz dzwieku moze zablokowac bo za dlugo sprawdza ?
  • +
  • -
  • 0

#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 07.05.2011 19:36

Nie sądze, ale optymalniej z Trie: tyle equali
  • +
  • -
  • 0




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

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