Paweł Napisano 2 Marca 2019 Witam, mam problem z EmitSoundToClient . Mianowicie normalnie robię PrecacheSound, a dźwięk i tak nie działa. Podrzucam kawałki kodu. Event: Spoiler /* [ NoScope Info ] */ char Victim[64], Attacker[64]; if(!GetEntProp(attacker, Prop_Send, "m_bIsScoped") && StrEqual(weapon, "awp")) { GetClientName(attacker, Attacker, sizeof(Attacker)); GetClientName(victim, Victim, sizeof(Victim)); float distance = Entity_GetDistance(victim, attacker); distance = Math_UnitsToMeters(distance); CPrintToChatAll("{darkred}-------------"); CPrintToChatAll("%s {orchid}%s{lightgreen} został zabity NoScope przez {orchid}%s{lightgreen} z {green}%0.02f{lightgreen} metrow!", OnlyAwp_Tag, Victim, Attacker, distance); CPrintToChatAll("{darkred}-------------"); for(int i = 1; i <= MaxClients; i++) if(IsValidClient(i)) SendMessageToAll(i); } SendMessageToAll: Spoiler stock void SendMessageToAll(int client) { if(g_bIsNoscopeRound) return; for(int i = 1; i <= MaxClients; i++) { if(IsValidClient(i)) { int music = GetRandomInt(1, 5); switch(music) { case 1: EmitSoundToClient(i, "*/OnlyAwp_Yamakashi/sound/Noscope_Sound1.mp3", _, _, _, _, 0.55); case 2: EmitSoundToClient(i, "*/OnlyAwp_Yamakashi/sound/Noscope_Sound2.mp3", _, _, _, _, 0.55); case 3: EmitSoundToClient(i, "*/OnlyAwp_Yamakashi/sound/Noscope_Sound3.mp3", _, _, _, _, 0.55); case 4: EmitSoundToClient(i, "*/OnlyAwp_Yamakashi/sound/Noscope_Sound4.mp3", _, _, _, _, 0.55); case 5: EmitSoundToClient(i, "*/OnlyAwp_Yamakashi/sound/Noscope_Sound5.mp3", _, _, _, _, 0.55); } } } } Pobieranie + Precache: Spoiler stock void OnlyAwp_LoadSounds() { AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound1.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound2.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound3.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound4.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound5.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/FirstBlood.mp3"); PrecacheSound("*/OnlyAwp_Yamakashi/sound/Noscope_Sound1.mp3", true); PrecacheSound("*/OnlyAwp_Yamakashi/sound/Noscope_Sound2.mp3", true); PrecacheSound("*/OnlyAwp_Yamakashi/sound/Noscope_Sound3.mp3", true); PrecacheSound("*/OnlyAwp_Yamakashi/sound/Noscope_Sound4.mp3", true); PrecacheSound("*/OnlyAwp_Yamakashi/sound/Noscope_Sound5.mp3", true); PrecacheSound("*/OnlyAwp_Yamakashi/sound/FirstBlood.mp3", true); } Przez Vasto_Lorde, 2 Marca 2019 Lekko poprawiam nazwę tematu Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Brum Brum 1 Napisano 2 Marca 2019 Czemu robisz "SendMessageToAll" to forem a w tej funkcji robisz jeszcze jednego fora zamiast stock void SendMessageToAll() { if (g_bIsNoscopeRound) return; int music = GetRandomInt(1, 5); switch (music) { case 1:EmitSoundToAll("*/OnlyAwp_Yamakashi/sound/Noscope_Sound1.mp3", SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 2:EmitSoundToAll("*/OnlyAwp_Yamakashi/sound/Noscope_Sound2.mp3", SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 3:EmitSoundToAll("*/OnlyAwp_Yamakashi/sound/Noscope_Sound3.mp3", SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 4:EmitSoundToAll("*/OnlyAwp_Yamakashi/sound/Noscope_Sound4.mp3", SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 5:EmitSoundToAll("*/OnlyAwp_Yamakashi/sound/Noscope_Sound5.mp3", SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); } } Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Paweł Napisano 2 Marca 2019 Zastosowałem twoje rozwiązanie @Brum Brum, ale nadal nie ma tego dźwięku. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Gość Napisano 2 Marca 2019 @Yamakashi A dźwięki w cs'ie włączone? ? Przez Vasto_Lorde, 2 Marca 2019 Pomimo sarkastycznego tonu wypowiedzi, jest to jeden z możliwych "błędów" :D Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Brum Brum Napisano 2 Marca 2019 (edytowane) Nie wiem do końca jak masz to zrobione, ale sobie podmienisz. Powinno działać, mam tak zrobione w swoich roundsoundach i jest legit char Music[][] = { "OnlyAwp_Yamakashi/sound/Noscope_Sound1.mp3", "OnlyAwp_Yamakashi/sound/Noscope_Sound2.mp3", "OnlyAwp_Yamakashi/sound/Noscope_Sound3.mp3", "OnlyAwp_Yamakashi/sound/Noscope_Sound4.mp3", "OnlyAwp_Yamakashi/sound/Noscope_Sound5.mp3", "OnlyAwp_Yamakashi/sound/FirstBlood.mp3", } public void OnPluginStart() { HookEvent("player_death", Event_PlayerDeath); } public void OnMapStart() { for (int i = 1; i < sizeof(Music); i++) { char sBuffer[PLATFORM_MAX_PATH]; Format(sBuffer, sizeof(sBuffer), "*/%s", Music[i]); PrecacheSound(sBuffer, true); } AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound1.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound2.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound3.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound4.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound5.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/FirstBlood.mp3"); } public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast) { /* [ NoScope Info ] */ char Victim[64], Attacker[64]; if (!GetEntProp(attacker, Prop_Send, "m_bIsScoped") && StrEqual(weapon, "awp")) { GetClientName(attacker, Attacker, sizeof(Attacker)); GetClientName(victim, Victim, sizeof(Victim)); float distance = Entity_GetDistance(victim, attacker); distance = Math_UnitsToMeters(distance); CPrintToChatAll("{darkred}-------------"); CPrintToChatAll("%s {orchid}%s{lightgreen} został zabity NoScope przez {orchid}%s{lightgreen} z {green}%0.02f{lightgreen} metrow!", OnlyAwp_Tag, Victim, Attacker, distance); CPrintToChatAll("{darkred}-------------"); SendMessageToAll(); } } stock void SendMessageToAll() { if (g_bIsNoscopeRound) return; char sBuffer[PLATFORM_MAX_PATH]; int music = GetRandomInt(1, 5); Format(sBuffer, sizeof(sBuffer), "*/%s", Music[music]); switch (music) { case 1:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 2:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 3:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 4:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 5:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); } } Edytowane 2 Marca 2019 przez Brum Brum Poprawka w SendMessageToAll Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Paweł Napisano 2 Marca 2019 5 minut temu, Matix8981 napisał: @Yamakashi A dźwięki w cs'ie włączone? ? Tak... Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Vasto_Lorde Napisano 2 Marca 2019 I na pewno nie ma żadnych specjalnych wiadomości w konsoli serwera/gracza? Dla upewnienia się że cały kod jest poprawny daj jakiś print zaraz przed switch (music) Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Paweł Napisano 2 Marca 2019 @Brum Brum Spoiler //// OnlyAwp_Yamakashi.sp // // D:\ServerPlugins\OnlyAwpPlugins\OnlyAwp_Yamakashi.sp(243) : error 029: invali d expression, assumed zero // D:\ServerPlugins\OnlyAwpPlugins\OnlyAwp_Yamakashi.sp(243) : error 029: invali d expression, assumed zero // D:\ServerPlugins\OnlyAwpPlugins\OnlyAwp_Yamakashi.sp(243) : error 029: invali d expression, assumed zero // D:\ServerPlugins\OnlyAwpPlugins\OnlyAwp_Yamakashi.sp(243) : fatal error 190: too many error messages on one line // // Compilation aborted. // 4 Errors. // // Compilation Time: 2,67 sec // ---------------------------------------- Press enter to exit ... Dokładnie: Spoiler public void OnMapStart() { <------------ for (int i = 1; i < sizeof(Music); i++) { char sBuffer[PLATFORM_MAX_PATH]; Format(sBuffer, sizeof(sBuffer), "*/%s", Music[i]); PrecacheSound(sBuffer, true); } AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound1.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound2.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound3.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound4.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound5.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/FirstBlood.mp3"); } Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Brum Brum Napisano 2 Marca 2019 4 minuty temu, Yamakashi napisał: @Brum Brum Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Ukryj treść //// OnlyAwp_Yamakashi.sp // // D:\ServerPlugins\OnlyAwpPlugins\OnlyAwp_Yamakashi.sp(243) : error 029: invali d expression, assumed zero // D:\ServerPlugins\OnlyAwpPlugins\OnlyAwp_Yamakashi.sp(243) : error 029: invali d expression, assumed zero // D:\ServerPlugins\OnlyAwpPlugins\OnlyAwp_Yamakashi.sp(243) : error 029: invali d expression, assumed zero // D:\ServerPlugins\OnlyAwpPlugins\OnlyAwp_Yamakashi.sp(243) : fatal error 190: too many error messages on one line // // Compilation aborted. // 4 Errors. // // Compilation Time: 2,67 sec // ---------------------------------------- Press enter to exit ... Dokładnie: Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! Ukryj treść public void OnMapStart() { <------------ for (int i = 1; i < sizeof(Music); i++) { char sBuffer[PLATFORM_MAX_PATH]; Format(sBuffer, sizeof(sBuffer), "*/%s", Music[i]); PrecacheSound(sBuffer, true); } AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound1.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound2.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound3.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound4.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound5.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/FirstBlood.mp3"); } Mi wszystko ładnie kompiluje Spoiler #include <sdktools> #include <smlib> #include <multicolors> #define OnlyAwp_Tag "[TAG]" char Music[][] = { "OnlyAwp_Yamakashi/sound/Noscope_Sound1.mp3", "OnlyAwp_Yamakashi/sound/Noscope_Sound2.mp3", "OnlyAwp_Yamakashi/sound/Noscope_Sound3.mp3", "OnlyAwp_Yamakashi/sound/Noscope_Sound4.mp3", "OnlyAwp_Yamakashi/sound/Noscope_Sound5.mp3", "OnlyAwp_Yamakashi/sound/FirstBlood.mp3", } public void OnPluginStart() { HookEvent("player_death", Event_PlayerDeath); } public void OnMapStart() { for (int i = 1; i < sizeof(Music); i++) { char sBuffer[PLATFORM_MAX_PATH]; Format(sBuffer, sizeof(sBuffer), "*/%s", Music[i]); PrecacheSound(sBuffer, true); } AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound1.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound2.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound3.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound4.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/Noscope_Sound5.mp3"); AddFileToDownloadsTable("sound/OnlyAwp_Yamakashi/sound/FirstBlood.mp3"); } public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast) { /* [ NoScope Info ] */ char weapon[32]; event.GetString("weapon", weapon, sizeof(weapon)); int victim = GetClientOfUserId(event.GetInt("userid")); int attacker = GetClientOfUserId(event.GetInt("attacker")); if (!GetEntProp(attacker, Prop_Send, "m_bIsScoped") && StrEqual(weapon, "awp")) { float distance = Entity_GetDistance(victim, attacker); distance = Math_UnitsToMeters(distance); CPrintToChatAll("{darkred}-------------"); CPrintToChatAll("%s {orchid}%s{lightgreen} został zabity NoScope przez {orchid}%s{lightgreen} z {green}%0.02f{lightgreen} metrow!", OnlyAwp_Tag, victim, attacker, distance); CPrintToChatAll("{darkred}-------------"); SendMessageToAll(); } } stock void SendMessageToAll() { //if (g_bIsNoscopeRound) Zakodowałem bo nie wiem skąd się to bierze. // return; char sBuffer[PLATFORM_MAX_PATH]; int music = GetRandomInt(1, 5); Format(sBuffer, sizeof(sBuffer), "*/%s", Music[music]); switch (music) { case 1:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 2:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 3:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 4:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 5:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); } } Tylko zamień tam sobie player_death bo trochę pozmieniałem + zakodowałem g_bIsNoscopeRound Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Avgariat 1 Napisano 2 Marca 2019 3 godziny temu, Brum Brum napisał: stock void SendMessageToAll() { //if (g_bIsNoscopeRound) Zakodowałem bo nie wiem skąd się to bierze. // return; char sBuffer[PLATFORM_MAX_PATH]; int music = GetRandomInt(1, 5); Format(sBuffer, sizeof(sBuffer), "*/%s", Music[music]); switch (music) { case 1:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 2:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 3:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 4:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); case 5:EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); } } Ale wiesz, że każdy case zawiera idealnie to samo? XD stock void SendMessageToAll(int client) { if(g_bIsNoscopeRound) return; char soundPath[PLATFORM_MAX_PATH]; Format(soundPath, sizeof(soundPath), "%s", nameOfMusicMatrixVar[GetRandomInt(0, sizeof(nameOfMusicMatrixVar)-1)]); for(int i = 1; i <= MaxClients; i++) if(IsValidClient(i)) EmitSoundToClient(i, soundPath, -2, 0, 0, 0, 0.55); } nameOfMusicMatrixVar - tablica ze ścieżkami do plików muzycznych z pominięciem folderu sound. To @up tak dla samej idei zrobiłem. Co do tematu, to zrób sobie komendę, która będzie wywoływać SendMessageToAll i sprawdź, czy w ogóle Ci te odtwarzanie działa. Jeżeli tak, to błąd jest w innym miejscu. W przeciwnym wypadku proponuję sprawdzić format plików muzycznych. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Brum Brum Napisano 2 Marca 2019 1 godzinę temu, Avgariat napisał: Ale wiesz, że każdy case zawiera idealnie to samo? XD ?? Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Master 1 Napisano 2 Marca 2019 54 minuty temu, Brum Brum napisał: ?? Instrukcja switch nie miała sensu, bo każdy case robił dokładnie to samo. Wystarczyło w tym przypadku EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Brum Brum Napisano 2 Marca 2019 5 minut temu, Master napisał: Instrukcja switch nie miała sensu, bo każdy case robił dokładnie to samo. Wystarczyło w tym przypadku EmitSoundToAll(sBuffer, SOUND_FROM_PLAYER, SNDCHAN_AUTO, SNDLEVEL_NORMAL, SND_NOFLAGS, 0.55); Fakt, zapomniałem o usunięciu case`a ? Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Paweł Napisano 2 Marca 2019 Aktualnie mam taki error w konsoli: [Sound] S_StartSound(): Failed to load sound 'sound\onlyawp_yamakashi\sound\levelup_sound.mp3'. File is missing from disk or is invalid. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Avgariat Napisano 2 Marca 2019 Funkcje EmitSound(...) i PrechacheSound kierują od razu do folderu csgo/sound/, a AddFileToDownload nie. Dlatego ścieżki przy precache i emit powinny być z pominięciem folderu csgo/sound/. Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Paweł 1 Napisano 2 Marca 2019 (edytowane) Do zamknięcia, Avgariat pomógł mi na pw. Zadziałało wyrzucenie "*" przy PrecacheSound oraz EmitSoundToClient . Edytowane 2 Marca 2019 przez Yamakashi Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach
Vasto_Lorde Napisano 2 Marca 2019 Wiadomość wygenerowana automatycznie Pomoc udzielona Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach