Źle działa losowanie
Scoti
06.07.2011
Witam. Na moim serwerze Easy Block zrobiłem block jeżeli na którego się ustawie losowany jest jeden z 6-ciu dzwięków (muzyka). Jednak gdy się ustawie wszystkie 6 dzwięków zaczyna grać na raz, a chcę aby tylko 1 z tych 6 zaczoł grać i za każdym razem inny, wykożystałem do tego funkcje random.
Nie mam pojęcia co tu jest źle, proszę o poprawienie kodu lub napisanie nowego. Błędów przy kompilacji nie ma, lecz w grze zaczyna grać wszystkie sześć utworów na raz. Dam plusa.
ActionMuzyka(id) { new losowanie = random_num(1, 6); switch(losowanie) { case 1: { client_cmd(0, "spk %s", muzyka_muzyka1); } case 2: { client_cmd(0, "spk %s", muzyka_muzyka2); } case 3: { client_cmd(0, "spk %s", muzyka_muzyka3); } case 4: { client_cmd(0, "spk %s", muzyka_muzyka4); } case 5: { client_cmd(0, "spk %s", muzyka_muzyka5); } case 6: { client_cmd(0, "spk %s", muzyka_muzyka6); } } }
Nie mam pojęcia co tu jest źle, proszę o poprawienie kodu lub napisanie nowego. Błędów przy kompilacji nie ma, lecz w grze zaczyna grać wszystkie sześć utworów na raz. Dam plusa.
R3X
07.07.2011
ActionMuzyka(id)to wskazuje, że wywołujesz funkcje na wszystkich graczach osobno, a potem i tak puszczasz muzykę wszystkim
client_cmd(0,
musisz zdecydować: jedno wywołanie i 0 albo wiele i id
Scoti
07.07.2011
Inne funkcje mają albo id albo id, ent, co ja mam wstawić?
Piszesz, że puszczam muzykę wszystkim, a chcę tylko jednemu graczowi, który ustanie na ten block. Mam zamiast:
Użyć:
Edycja z godziny 08:06:
Gdy zrobiłem:
Znikneły 2 warningi ale w grze nadal jest tak samo, nie lusują się utwory tylko wszystkie zaczynają grać na raz.
Użytkownik Scoti edytował ten post 07.07.2011 07:10
Piszesz, że puszczam muzykę wszystkim, a chcę tylko jednemu graczowi, który ustanie na ten block. Mam zamiast:
client_cmd(0, "spk %s", muzyka_muzyka1);
Użyć:
client_cmd(1, "spk %s", muzyka_muzyka1); czy najlepiej emit_sound(id, CHAN_STATIC, g_sound_muzyka1, 1.0, ATTN_NORM, 0, PITCH_NORM); *g_sound_muzyka1 będzie działać tak samo
Edycja z godziny 08:06:
Gdy zrobiłem:
ActionMuzyka()
Znikneły 2 warningi ale w grze nadal jest tak samo, nie lusują się utwory tylko wszystkie zaczynają grać na raz.
Użytkownik Scoti edytował ten post 07.07.2011 07:10
sebul
07.07.2011
Skoro jednemu, to po prostu zamień "client_cmd(0," na "client_cmd(id,".Inne funkcje mają albo id albo id, ent, co ja mam wstawić?
Piszesz, że puszczam muzykę wszystkim, a chcę tylko jednemu graczowi, który ustanie na ten block. Mam zamiast:client_cmd(0, "spk %s", muzyka_muzyka1);
Użyć:client_cmd(1, "spk %s", muzyka_muzyka1); czy najlepiej emit_sound(id, CHAN_STATIC, g_sound_muzyka1, 1.0, ATTN_NORM, 0, PITCH_NORM); *g_sound_muzyka1 będzie działać tak samo
bo dalej odtwarzasz każdemu te dźwięki.Edycja z godziny 08:06:
Gdy zrobiłem:ActionMuzyka()
Znikneły 2 warningi ale w grze nadal jest tak samo, nie lusują się utwory tylko wszystkie zaczynają grać na raz.
Jak nie wiesz, to nie mieszaj...może po każdej piosence dodaj return PLUGIN_CONTINUE; ?
Scoti
07.07.2011
sebul, dałem id więc jak pisałeś odtwarza tylko mi, ale nadal nie losuje muzyki tylko odtwarza wszystkie na raz i każda wchodzi na siebie, jak zrobić żeby losowało tylko jedną z sześciu?
R3X
07.07.2011
sama funkcja ActionMuzyka() jest porządku, więc błąd leży w jej wywołaniu; dopóki nie pokażesz więcej kodu nic nie poradzimy
Scoti
07.07.2011
To są define z muzyki:
#define muzyka_melanz "sound/nazwasieci/melanz.mp3" #define muzyka_muzyka1 "sound/nazwasieci/muzyka1.mp3" #define muzyka_muzyka2 "sound/nazwasieci/muzyka2.wav" #define muzyka_muzyka3 "sound/nazwasieci/muzyka3.wav" #define muzyka_muzyka4 "sound/nazwasieci/muzyka4.mp3" #define muzyka_muzyka5 "sound/nazwasieci/muzyka5.wav" #define muzyka_muzyka6 "sound/nazwasieci/muzyka6.mp3" #define muzyka_bron "sound/nazwasieci/bron.wav"