AgainPsychoX 14 Opublikowano 22 czerwca 2014 Udostępnij Opublikowano 22 czerwca 2014 (edytowane) W tym (moim pierwszym tutaj) poradniku chciałbym pokazać Wam jak losować w Skript.Chodzi mi tu o np. losowe ciągi znaków, losowe liczby i kilka wskazówek i uwag..Randomizacja w SkriptDzięki randomizacji w Skript'cie jesteśmy w stanie losować obiekty z pewnego zakresu/zbioru.give a diamond to a random player out of all players in "world" Kod powyżej spowoduje, że losowy gracz z zakresu wszystkich graczy w świecie "world" dostanie diament.message "Losowa liczba pomiedzy 8 a 35: %random integer between 8 and 35%" Możemy także losować liczby z zakresów. Kod powyżej napisze nam jakąś losową liczbę całkowitą.message "Losowa liczba pomiedzy 8 a 35: %random number between 8 and 35%" Skript potrafi także losować liczbę niecałkowitą (ułamek dziesiętny), przykładowo kod powyżej napisze nam jakąś losową liczbę dziesiętną.chance of 10%: message "Masz szczescie!"W powyższym kodzie też jest randomizacja. Wyrażenie, a raczej kondycja "chance", pozwala na wylosowanie szansy na jakieś zdarzenie. Powyżej, mamy 10% szans (z 100%) na otrzymanie wiadomości "Masz szczescie!". Możemy to też zapisać na inne sposoby:if chance of 0.1: message "Masz szczescie!"# LUBchance of 10/100: message "Masz szczescie!"# LUBchance of 37.4/374: message "Masz szczescie!" .WyrażeniaW dokumentacji Skript'a mamy więc 3 wyrażenia związane z randomizacją: "random" i "random number" oraz "chance". "random" służy do losowania pewnego typu obiektu z jakiegoś zakresu obiektów.Składnia: [a] random %typ obiektu% [out] of %zakres, zbiór%Przykłady: a random player out of all playersUwagi: brak "random number" służy do losowania liczb z pewnego zakresu.Składnia: [a] random (integer|number) (from|between) %liczba% (to|and) %liczba%Przykłady: a random integer between 38 and 79 a random number from 73.48 to 91.2Uwagi: Jeśli użyjemy, np. "random number from 10 and 5" to też będzie działać normalnie. Jeśli jednak spróbujemy "random integer between 10 and 10" to z'crash'ujemy skrypt/plugin/serwer. "chance" służy do losowania szansy.Składnia: chance of %liczba od 0 do 1%Przykłady: chance of 96/183 chance of 0.41273 chance of 36.7%Uwagi: Liczba od 0 do 1 == procent (mniejszy lub równy 100%) == (ułamek prawidłowy) Łączenie szanschance of 25%: message "Wiadomosc 1" stopchance of 25%: message "Wiadomosc 2" stopchance of 25%: message "Wiadomosc 3" stopWarto zauważyć, że "łączenie" wyrażeń "chance" powoduje ciekawy efekt. Niektóry popełniają błąd, gdy myślą w takim przypadku, że wszystkie wiadomości mają równą szansę na wyświetlenie. W rzeczywistości jest to tak, że wiadomość 1 ma 25%, 2 -- 75%*25%=0,1875 a 3 -- 75%*75%*25%= 0,140625. Po każdym "chance" jest przecież "stop", czyli wyjście z działania. Na początku losuje się szansa na wysłanie 1 wiadomości i stop (25%). Jeśli szansa się nie powiodła, jest wykonywana kolejna instrukcja (75%), czyli "chance" związana z wiadomością 2. Zrozumieliście choć trochę niektórzy (mam nadzieję)? Losowe kodySkript nie dostarcza wyrażenia, które pozwala losować w zakresie znaków lub liter.Przydałoby się takie coś np. w Captcha. Jest to jednak do wykonania.set {characters::1} to "a"set {characters::2} to "b" # ... (w spoilerze ponizej jest reszta dlaset {characters::3} to "c" # cyfr oraz dla malych i duzych liter)# [...]Na początek definiujemy znaki (czy tam litery) w liście/tablicy. set {characters::1} to "a" set {characters::2} to "b" set {characters::3} to "c" set {characters::4} to "d" set {characters::5} to "e" set {characters::6} to "f" set {characters::7} to "g" set {characters::8} to "h" set {characters::9} to "i" set {characters::10} to "j" set {characters::11} to "k" set {characters::12} to "l" set {characters::13} to "m" set {characters::14} to "n" set {characters::15} to "o" set {characters::16} to "p" set {characters::17} to "q" set {characters::18} to "r" set {characters::19} to "s" set {characters::20} to "t" set {characters::21} to "v" set {characters::22} to "u" set {characters::23} to "w" set {characters::24} to "x" set {characters::25} to "y" set {characters::26} to "z" set {characters::27} to "A" set {characters::28} to "B" set {characters::29} to "C" set {characters::30} to "D" set {characters::31} to "E" set {characters::32} to "F" set {characters::33} to "G" set {characters::34} to "H" set {characters::35} to "I" set {characters::36} to "J" set {characters::37} to "K" set {characters::38} to "L" set {characters::39} to "M" set {characters::40} to "N" set {characters::41} to "O" set {characters::42} to "P" set {characters::43} to "Q" set {characters::44} to "R" set {characters::45} to "S" set {characters::46} to "T" set {characters::47} to "V" set {characters::48} to "U" set {characters::49} to "W" set {characters::50} to "X" set {characters::51} to "Y" set {characters::52} to "Z" set {characters::53} to "1" set {characters::54} to "2" set {characters::55} to "3" set {characters::56} to "4" set {characters::57} to "5" set {characters::58} to "6" set {characters::59} to "7" set {characters::60} to "8" set {characters::61} to "9" set {characters::62} to "0" set {_dlugosc.ciagu} to 8set {_gotowy.ciag} to ""loop {_dlugosc.ciagu} times: set {_gotowy.ciag} to "%{_gotowy.ciag}%%{characters.letters::%random integer from 1 to 62%}%"message "%{_gotowy.ciag}%"Później definiujemy zmienną dla ciągu na "" (nic), a następnie zapętlamy dodawanie do niej losowego znaku z tablicy tyle razy, jak długi ma być ten ciąg. Tak oto możemy otrzymać losowy ciąg znaków. .... W tym spoilerze zobaczysz przykładowe captcha (test polegający na przepisaniu losowego kodu) ...Notka: Używa tej listy/tabeli w pierwszym spoilerze.command /captcha <text> [<player>]: trigger: if player-argument is set: message "Wyslano test Captcha do %player-argument%." set {_r} to "" loop argument 1 parsed as integer times: set {_r} to "%{_r}%%{characters::%random integer between 1 and 62%}%" message "Test Captcha! Wpisz /captcha %{_r}% aby zdac!" set {captcha.kod::%player-argument%} to {_r} set {captcha.pyt::%player-argument%} to sender else: if {captcha.kod::%player-argument%} is not set: message "Nie ma dla Ciebie testu Captcha." if argument 1 is {captcha::%player-argument%}: message "Test Captcha zaliczony!" message "%sender% zaliczyl test Captcha" to {captcha.pyt::%player-argument%} else: message "Test Captcha nie zaliczony!" message "%sender% nie zaliczyl testu Captcha" to {captcha.pyt::%player-argument%} delete {captcha.kod::%player-argument%} delete {captcha.pyt::%player-argument%} Edytowane 22 czerwca 2014 przez AgainPsychoX McLagomer, Lizak3, theneuetimes i 4 innych 7 Odnośnik do komentarza https://skript.pl/temat/1146-randomizacja-jak-losowa%C4%87-losowe-liczby-i-kody-captcha/ Udostępnij na innych stronach Więcej opcji udostępniania...
ToNy 548 Opublikowano 22 czerwca 2014 Udostępnij Opublikowano 22 czerwca 2014 Ciekawy pomysł na poradnik. Jeszcze tego nie było. Na 100% ktoś z niego skorzysta. Odnośnik do komentarza https://skript.pl/temat/1146-randomizacja-jak-losowa%C4%87-losowe-liczby-i-kody-captcha/#findComment-8915 Udostępnij na innych stronach Więcej opcji udostępniania...
AgainPsychoX 14 Opublikowano 22 czerwca 2014 Autor Udostępnij Opublikowano 22 czerwca 2014 (edytowane) Musiałem sam błędy strony omijać, bo TAGi usuwało :< :( poza tym: Dzięki ;) @downTo jest bardziej styl pisania, a nie funkcjonalność :) Edytowane 22 czerwca 2014 przez AgainPsychoX Odnośnik do komentarza https://skript.pl/temat/1146-randomizacja-jak-losowa%C4%87-losowe-liczby-i-kody-captcha/#findComment-8916 Udostępnij na innych stronach Więcej opcji udostępniania...
Lizak3 10 Opublikowano 22 czerwca 2014 Udostępnij Opublikowano 22 czerwca 2014 Warto też dodać ,że w skryptach przy losowaniu "szans" najlepiej je sortować od najmniejszej do największej. Ale to chyba jest oczywiste :P Odnośnik do komentarza https://skript.pl/temat/1146-randomizacja-jak-losowa%C4%87-losowe-liczby-i-kody-captcha/#findComment-8920 Udostępnij na innych stronach Więcej opcji udostępniania...
ABS 1 Opublikowano 23 czerwca 2014 Udostępnij Opublikowano 23 czerwca 2014 Poradnik bardzo fajny, sam zabierałem się właśnie za podobny skrypt losujący liczbę do przepisania ;) Odnośnik do komentarza https://skript.pl/temat/1146-randomizacja-jak-losowa%C4%87-losowe-liczby-i-kody-captcha/#findComment-8999 Udostępnij na innych stronach Więcej opcji udostępniania...
Norbi 1337 Opublikowano 23 czerwca 2014 Udostępnij Opublikowano 23 czerwca 2014 Poradnik ładny, przejrzysty. Podoba mi się, i jeszcze takiego nie widziałem. :sopher: Odnośnik do komentarza https://skript.pl/temat/1146-randomizacja-jak-losowa%C4%87-losowe-liczby-i-kody-captcha/#findComment-9006 Udostępnij na innych stronach Więcej opcji udostępniania...
Jestem Sparklez 2 Opublikowano 19 lutego 2016 Udostępnij Opublikowano 19 lutego 2016 Powiedzmy że wylosuje nam 28 to jak zrobić aby później było broadcast "%nickname of player% wylosował liczbe 28" powiedzmy %random integer between 8 and 35% Odnośnik do komentarza https://skript.pl/temat/1146-randomizacja-jak-losowa%C4%87-losowe-liczby-i-kody-captcha/#findComment-78040 Udostępnij na innych stronach Więcej opcji udostępniania...
Oedeopol 67 Opublikowano 20 lutego 2016 Udostępnij Opublikowano 20 lutego 2016 Fajny poradnik, może mi się przyda Odnośnik do komentarza https://skript.pl/temat/1146-randomizacja-jak-losowa%C4%87-losowe-liczby-i-kody-captcha/#findComment-78071 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi