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

Usunięcie dźwięku z granata HE


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

#1 zasepa

    Pomocny

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:73
  • Lokalizacja:polska
Offline

Napisano 12.06.2016 22:43

Witam

Chodzi oto że nwm jak usunąć dźwięk z granata HE podczas jego wybuchu. Czyli dźwięk wybuchu.

Chodzi mi tutaj o programowe w pluginie jego usunięcie.

Problem jest tylko z HE bo on z tego co widzę inaczej się zachowuje niż pozostałe granaty. Z nimi było to proste.

Lecz na HE nic nie działa. Bo jak jakoś udało mi się go zablokować to całkowiecie ze nie wybuchł.

Proszę o pomoc


  • +
  • -
  • 0

#2 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 13.06.2016 11:27

Samego dzwieku nigdy nie mialem okazji usuwac, bo i po co. Natomiast wydaje mi sie, ze bedzie to wygladac w podobny sposob jak z dzwiekami noza. Zarejestruj emitsound, wykryj odpowiedni dzwiek i go zablokuj.


  • +
  • -
  • 0

b35020692_qesnxqa.png


#3 zasepa

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:73
  • Lokalizacja:polska
Offline

Napisano 14.06.2016 07:59

W tym rzecz ze ta blokada w emit sound nie działa. Dlatego napisałem temat czy może ktoś zna inny sposób.

Proszę o pomoc


  • +
  • -
  • 0

#4 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 14.06.2016 10:24

W takim razie wychwyc think granata w hamsandwich badz model lub dzwiek w fakemeta i zablokuj jego funkcje po opuszczeniu na ziemie. Stworz recznie efekt wybuchu, wtedy nie bedzie dzwieku wiec efekt zamierzony.

 

Przykladowy kod na blokade funkcji granata. Przed stworzeniem enta, po wykryciu funkcji dodajesz

entity_set_vector(ent, EV_VEC_origin, Float:{9999.9, 9999.9, 9999.9});
entity_set_int(ent, EV_INT_flags, FL_KILLME);

  • +
  • -
  • 1

b35020692_qesnxqa.png


#5 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

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

Napisano 14.06.2016 11:57

#include <amxmodx>
#include <fakemeta>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Asiap123"

new g_szSoundsExplosion[] = "weapons/explode3.wav, weapons/explode4.wav, weapons/explode5.wav"

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)

	register_forward(FM_EmitSound, "EmitSound");
}

public EmitSound(iEnt, iChannel, szSound[], Float:fVolume, Float:fAttn, iFlag, iPitch)
{
	if(GetGrenadeType(iEnt) != CSW_HEGRENADE)
	{
		return FMRES_IGNORED;
	}

	for(new i; i < sizeof g_szSoundsExplosion; i++)
	{
		if(!equali(g_szSoundsExplosion, szSound))
		{
			continue;
		}

		engfunc(EngFunc_EmitSound, iEnt, iChannel, szSound, fVolume, fAttn, SND_STOP, iPitch);
		return FMRES_SUPERCEDE;
	}
	return FMRES_IGNORED;
}

GetGrenadeType(iEnt)
{
	static szClass[9];
	pev(iEnt, pev_classname, szClass, 8);
	if(!equal(szClass, "grenade") || get_pdata_bool(iEnt, 385))
	{
		return PLUGIN_CONTINUE;
	}

	static usEvent;
	if(!(usEvent = get_pdata_short(iEnt, 228)))
	{
		return CSW_FLASHBANG;
	}

	static m_usHgrenExplo;
	if(!m_usHgrenExplo)
	{
		m_usHgrenExplo = engfunc(EngFunc_PrecacheEvent, 1, "events/createexplo.sc");
	}

	return usEvent == m_usHgrenExplo ? CSW_HEGRENADE : CSW_SMOKEGRENADE;
} 

  • +
  • -
  • 2

#6 zasepa

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:73
  • Lokalizacja:polska
Offline

Napisano 15.06.2016 13:08

Asiap - niestety ale nie działa. A dokładniej w tym miejscu: Po prostu ten dźwięk nie zostaje z ciszony. nic się nie zmienia

engfunc(EngFunc_EmitSound, iEnt, iChannel, szSound, fVolume, fAttn, SND_STOP, iPitch);

Po za tym skąd wziąłeś takie nazwy dzwięków:? 

weapons/explode3.wav, weapons/explode4.wav, weapons/explode5.wav

Ja wcześniej dodałem instrukcje wyświetlającą mi ścieżkę:

ColorChat(0, GREEN, "Channel: %d, Sciezka: %s", channel, sound);

I u mnie ścieżka przy wybuchu tego granatu to: 

weapons/debris2.wav

A nie to co podałeś, ale mniejsza oto bo bez tego sprawdzania również nie działa. :(

 

 

Linux - tak tylko że nie mam pojęcia jak zrobić ten wybuch. Nie wiem jak zadawać dmg graczom w obrębie wagowo odległości oraz pokazanie spritesa. Nawet nwm jak ten sprites się nazywa(co pokazuje wybuch) i jak go w tym przypadku wyświetlić. :(

Zablokowanie wybuchu jest bardzo łatwe akurat. :)

 

Bo po prostu chce zamienić ten dźwięk na inny. Wiec muszę tego usunąć

 

A i przy okazji mam pytanie chodzi mi o dźwięki. Mam plik dźwiękowy w formacie .wav i gdy go emituje w cs to nie ma wysokich tonów tylko niskie. Tak jak byśmy zwiększyli jego głośność np w audacity. Jest tam suwak którym możemy zwiększyć decybele, czy coś takiego. Mimo że gdy na PC go odtwarzam to jest wszystko dobrze. Na czym może polegać problem? Czemu cs inaczej go odtwarza?

Pozdrawiam


  • +
  • -
  • 0

#7 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 19.06.2016 10:14

Blokujac sciezki typu

weapons/debris2.wav

nie blokujesz wybuchu lecz dzwieki typu uzycia granatu a to nie to samo. Dzwieki wybuchu np

weapons/explode4.wav

znajduja sie w folderze valve/sound i one odpowiadaja za dzwieki wybuchow lecz nie zablokujesz ich po stronie gracza (tak jak np dzwieku strzalu).

 

Jesli chcesz wywolac efekt sprite wybuchu, wstawiasz do funkcji wybuchu np taki kod

message_begin(MSG_BROADCAST, SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_blast);
write_byte(32);
write_byte(20);
write_byte(0);
message_end();

iOrigin to jego pozycja, pobierasz ja np za pomoca funkcji pev(index, pev_origin, iOrigin). Sprite_blast to lokalizacja do sprite, ktory zostanie wyswietlony w trakcie tworzenia wybuchu. Do precache dodajesz np

sprite_blast = precache_model("sprites/dexplo.spr");

(oczywiscie pierw jeszcze trzeba utworzyc zmienna globalna, w tym wypadku sprite_blast).

 

 

Dalej jesli chodzi o zadane obrazenia, to po prostu sprawdzasz w petli czy gracz znajduje sie blizej niz okreslona odleglosc od pozycji enta (iorigin). Nizej przyklad

new Float:player_origin[3];
for(new i = 1; i <= max_players; i ++)
{
	if(!is_user_alive(i))
		continue;

	pev(i, pev_origin, player_origin);
	if(get_distance_f(iOrigin, player_origin) <= 50.0)
	{

	}
}

funkcja get_distance_f sluzy do odmierzania odleglosci miedzy pozycja x a y. W tym wypadku funkcja bedzie wykonywana jesli gracz znajdzie sie blizej niz 50 unitow w odleglosci enta.

 

Teraz w funkcji wykonujesz kod na obrazenia, ustawiasz stala wartosc jesli ma na stale zadawac np 40 dmg lub po prostu obrazenia (np 100-odleglosc). Spowoduje to taki sam efekt obrazen, jak wyglada to np z he. Do zadanych obrazen uzyj funkcji

ExecuteHam(Ham_TakeDamage, id, ent, ent, 40.0, 1);

Nie chcialo mi sie pisac z tego gotowego pluginu, ale mysle ze sie polapiesz. Poczytaj dokumentacje o funkcjach ktorych ci podalem i troche poradnikow na temat tworzenia bytow, to dasz sobie rade.


  • +
  • -
  • 1

b35020692_qesnxqa.png


#8 zasepa

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:73
  • Lokalizacja:polska
Offline

Napisano 19.06.2016 20:39

Bardzo dziękuje za pomoc.

Tego potrzebowałem :)

Tak chce zrobić aby był podobny do HE. tylko z innymi dźwiękami.

Kod jest dla mnie zrozumiały. Lecz muszę jeszcze poczytać o:

ExecuteHam(Ham_TakeDamage, id, ent, ent, 40.0, 1);

Bo czemu tu jest 2 razy "ent" wiem ze id to osoba atakująca a ent to ofiara, 40.0 to dmg , a 1 to nwm :)

Jeszcze raz bardzo dziękuje

 

Ale jeszcze nie została udzielona odpowiedz na moje kolejne pytanie więc powtarzam je:

Mam pytanie chodzi mi o dźwięki. Mam plik dźwiękowy w formacie .wav i gdy go emituje w cs to nie ma wysokich tonów tylko niskie. Tak jak byśmy zwiększyli jego głośność np w audacity. Jest tam suwak którym możemy zwiększyć decybele, czy coś takiego. Mimo że gdy na PC go odtwarzam to jest wszystko dobrze. Na czym może polegać problem? Czemucs inaczej go odtwarza?

 

 


  • +
  • -
  • 0

#9 Master Yoga

    Support Team | Mocarz

  • Support Team

Reputacja: 136
Zaawansowany

  • Postów:275
  • Lokalizacja:Magistrala Adresowa
Offline

Napisano 19.06.2016 21:07

Spoiler

 

Zacznijmy od tego, że CS to nie odtwarzacz muzyki. Z tego co pamiętam nie otwiera on nawet plików muzycznych z szybkością transmisji bitów większą niż 700 kb/s z hakiem.

 


ExecuteHam(Ham_TakeDamage, id, ent, ent, 40.0, 1);

 

W skrócie funkcja ta wywołuje wydarzenie z "kanapki" ( hamsandwich ).


Bo czemu tu jest 2 razy "ent" wiem ze id to osoba atakująca a ent to ofiara, 40.0 to dmg , a 1 to nwm

 

Mylisz się . Parametr ID to index gracza, który otrzyma dane obrażenia ( parametr 5 ).

Parametr 3 to byt zadający obrażenia. ( Najczęściej ten byt jest równy atakującemu ( parametr 4 ) stąd to drugie "ent" ).
Choć w przypadku np. granatu byt zadający obrażenia przyjmuję wartość inną niż parametr 4 ( atakujący ).

Ostatni parametr to rodzaj obrażeń. W tym temacie znajdziesz więcej informacji na ten temat ( https://amxx.pl/topi...881-damagebits/).

 

 


  • +
  • -
  • 0

HTML ★ CSS ★ JAVASCRIPT ★ AJAX ★ JQUERY ★ PHP ★ C++ ★ PAWN ★ SQL ★ Objective-C++


MKW0tb8.pngMKW0tb8.pngMKW0tb8.png


#10 zasepa

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:73
  • Lokalizacja:polska
Offline

Napisano 20.06.2016 17:12

Wszystko jest dobrze ale pojawił się jeden problem

Gdy zastosowałem kod:

	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_EXPLOSION);
	write_coord(iOrigin[0]);
	write_coord(iOrigin[1]);
	write_coord(iOrigin[2]);
	write_short(sprite_he_explode);
	write_byte(32);
	write_byte(20);
	write_byte(0);
	message_end();

To granat standardowo wybucha. Gdy zakomentuję powyższy kod to mój kod się wykonuje i poprawnie blokuje granat oraz jest mój dźwięk, itp

Więc czy można jakoś inaczej wyświetlić spritesa wybuchu? 


  • +
  • -
  • 0

#11 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 20.06.2016 21:51

Wszystko jest dobrze ale pojawił się jeden problem

Gdy zastosowałem kod:

	message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
	write_byte(TE_EXPLOSION);
	write_coord(iOrigin[0]);
	write_coord(iOrigin[1]);
	write_coord(iOrigin[2]);
	write_short(sprite_he_explode);
	write_byte(32);
	write_byte(20);
	write_byte(0);
	message_end();

To granat standardowo wybucha. Gdy zakomentuję powyższy kod to mój kod się wykonuje i poprawnie blokuje granat oraz jest mój dźwięk, itp

Więc czy można jakoś inaczej wyświetlić spritesa wybuchu? 

message_begin(MSG_PVS, SVC_TEMPENTITY, iOrigin);
write_byte(TE_SPRITE)
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_id);
write_byte(5); // scale
write_byte(200); // alpha
message_end();

  • +
  • -
  • 1

b35020692_qesnxqa.png


#12 zasepa

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:73
  • Lokalizacja:polska
Offline

Napisano 21.06.2016 10:40

Zadziałało ale jak trochę zmieniłem na tak:

message_begin(MSG_BROADCAST, SVC_TEMPENTITY);
write_byte(TE_SPRITE)
write_coord(iOrigin[0]);
write_coord(iOrigin[1]);
write_coord(iOrigin[2]);
write_short(sprite_he_explode);
write_byte(90); // scale
write_byte(200); // alpha
message_end();

Co do zadawania obrażeń to działa tylko że pokazuje ze zostało się zabity bronią którą trzymamy po rzuceniu granata. Zmieniłem te damagebits na HE(dorobiłem define) ale bezskutecznie.

Ale ważne ze działa.

Dziękuje za pomoc

 

 

 


  • +
  • -
  • 0

#13 zasepa

    Pomocny

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:73
  • Lokalizacja:polska
Offline

Napisano 21.06.2016 21:28

Hmm dopiero teraz zauważyłem ale ten efekt wybuchu jest płaski. chodzi oto że wygląda jak ściana i obraca się według mnie.

Gdy użyłem pliku "sprites/eexplo.spr" który domyślnie znajduje się w folderze z gra.

Da się jakoś to naprawić aby ten efekt był 3d?

Pozdrawiam


  • +
  • -
  • 0




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

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