random_num() - jak powtórzyć "losowani...
Najlepsza odpowiedź
MAGNET
19.11.2014 19:13
new utwor; public RoundSound() { numer = random_num(1, 13); if(utwor == numer) RoundSound(); else { utwor = numer; new Players[32],num; get_players(Players,num) for(new ajdi = 0;ajdi<num;ajdi++) { if(mute[ajdi]) Graj(ajdi); } } return PLUGIN_CONTINUE; }Przejdź do postu

psilocybe
18.11.2014
Jak w tytule, modyfikuję plugin SmartRS od Cheq i chciałem dodać warunek aby nie losowało mi dwa razy tej samej liczby.
Wstawiam fragment *.sma
public RoundSound() { numer = random_num(1, 13); new Players[32],num; get_players(Players,num) for(new ajdi = 0;ajdi<num;ajdi++) { if(mute[ajdi]) Graj(ajdi); } return PLUGIN_CONTINUE; }
Ktoś zapoda jakiś prosty przykład? Nie mogę nic znaleźć
Edit: poza tym http://amxx.pl/topic...-bez-powtorzen/
Ale nie mam pojęcia o dynamicznych tablicach dobrze o tym wiecie
Liczę na pomoc.
Użytkownik psilocybe edytował ten post 18.11.2014 11:59
dasiek
18.11.2014
chcesz żeby 2 razy z rzędu nie leciała taka sama piosenka, czy żeby nie powtórzyła się póki wszystkie się nie wylosują?
MAGNET
18.11.2014
new zmienna[13] public RoundSound() { for(new i;i<13;i++) { if(zmienna[i]) zmienna[i] = 0; else { numer = random_num(1, 13); if(!zmienna[zmienna]) { new Players[32],num; get_players(Players,num) for(new ajdi = 0;ajdi<num;ajdi++) { if(mute[ajdi]) Graj(ajdi); } } else RoundSound(); return PLUGIN_CONTINUE; } }
psilocybe
18.11.2014
MAGNET, dzięki za odpowiedź ale pomimo że doszedłem do ładu z Twoim kodem to przy kompilacji:
linijka
if(!zmienna[zmienna])
zwraca
array must be indexed - variable "zmienna"
i na końcu publica RoundSound warn w kompilatorze
function RoundSound should return a value
Nie znam się, ale dlaczego pozornie proste rzeczy są tak skomplikowane? Nie ogarniam.
Btw.
Jeżeli losujemy numer to nie możemy go od razu zapisać do drugiej tablicy np. lastnumer[] i przed każdym puszczeniem sprawdzić czy wylosowany numer != lastnumer, jeżeli jest inaczej to PublicRoundsound
Nie było by?
Edit: CheQ nie zauważyłem Twojego posta, chcę opcję 1 Po prostu nie chce 2 razy z rzędu tej samej nuty.
Użytkownik psilocybe edytował ten post 18.11.2014 14:11
MAGNET
18.11.2014

a returna daj pod ostatnią klamrą
Ah, myślałem ze chcesz aby przeleciała cała playlista, a potem od nowa. Nie mam teraz czasu, ale jak ktoś mnie nie uprzedzi to napisze co i jak. Ale na postawione pytanie odpowiedziałeś sobie sam
MAGNET
18.11.2014

dasiek
18.11.2014
spróbuj zmienić linijkę losowanie na tę.
public RoundSound() { new bardzoStaryNumer = numer; do{ numer = random_num(1, sizeof numery_nut); } while(numer != bardzoStaryNumer); //dalszy kod }
psilocybe
18.11.2014
CheQ, plugin się kompiluje bez problemów ale crashuje serwer bez logów pomimo włączonego debug'a. Przecież powinno działać.
Najlepsza odpowiedź
MAGNET
19.11.2014
new utwor; public RoundSound() { numer = random_num(1, 13); if(utwor == numer) RoundSound(); else { utwor = numer; new Players[32],num; get_players(Players,num) for(new ajdi = 0;ajdi<num;ajdi++) { if(mute[ajdi]) Graj(ajdi); } } return PLUGIN_CONTINUE; }
Użytkownik MAGNET edytował ten post 19.11.2014 19:13